做些基础题
第一题:微生物增值
题目描述:
假设有两种微生物x和y。
x出生后每隔3分钟分裂一次(数目加倍),y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的x,半分钟之后吃掉一个y,并且此后,每隔一分钟吃掉一个y。
现在已知有新出生的x = 10,y = 89,求60分钟后y的数目。
思路:
由题意可知,y会在0.5,1.5,2.5,......这些时刻被吃掉,因此,我们可以把60分钟分成120份,这样就方便多了。
x = 10
y = 89
for i in range(1,121):
if i % 2 == 1:
y -= x
if i % 4 == 0:
y *= 2
if i % 6 == 0:
x *= 2
print(x,y)
第二题:成绩统计
题目描述:
编写一个程序,建立了一条单向链表,每个节点包含姓名、学号、英语成绩、数学成绩、c++成绩,并通过链表操作平均分最高的学生和平均分最低的学生并且输出。
输入格式:
输入n + 1行
第一行输入一个正整数n,表示学生的数量;
接下来的n行,每行输入5个数据,分别表示姓名、学号、英语成绩、数学成绩、c++成绩,注意,成绩有可能是小数。
输出格式:
输出两行,第一行为平均分最高的同学的姓名,第二行为平均分最低的同学姓名。
class Student:
def __init__(self, xm, xh, yy, sx, cpp):
self.xm = xm
self.xh = xh
self.yy = yy
self.sx = sx
self.cpp = cpp
students = []
try:
n = int(input("请输入学生数量:"))
except ValueError:
print("输入无效,请输入一个整数作为学生数量。")
exit(1)
for i in range(n):
try:
# 读取学生的姓名
xm = input(f"请输入第{i+1}个学生的姓名:")
# 读取学生的学号
xh = int(input(f"请输入第{i+1}个学生的学号:"))
# 读取学生的英语成绩
yy = float(input(f"请输入第{i+1}个学生的英语成绩:"))
# 读取学生的数学成绩
sx = float(input(f"请输入第{i+1}个学生的数学成绩:"))
# 读取学生的C++成绩
cpp = float(input(f"请输入第{i+1}个学生的C++成绩:"))
# 创建一个新的Student对象并添加到列表中
students.append(Student(xm, xh, yy, sx, cpp))
except ValueError:
print(f"输入错误:第{i+1}个学生的信息不完整或格式不正确。")
# 计算每个学生的平均成绩
for student in students:
student.cpp = (student.yy + student.sx + student.cpp) / 3
# 初始化平均成绩变量
sum_scores = [student.cpp for student in students]
min_score = min(sum_scores)
max_score = max(sum_scores)
# 找出平均成绩最高和最低的学生
max_index = sum_scores.index(max_score)
min_index = sum_scores.index(min_score)
# 打印结果
print(students[max_index].xm)
print(students[min_index].xm)
结果图:
第三题:星系炸弹
题目描述:
在x星系的广袤空间中漂浮着许多x星人造炸弹,用来作为宇宙中的路标。
每个炸弹都可以设定多少天之后爆炸。
比如,阿尔法炸弹放置时间为2015年1月1日,设置15天后保证,则它在2015年1月16日爆炸。
有一个贝塔炸弹,放置时间为2014年11月9日,设置时间为1000天,请你计算它爆炸的准确日期。
def calculate_date(year,month,day,days):
month_days = [31,28,31,30,31,30,31,31,30,31,30,31]
while days > 0:
day += 1
if day > month_days[month - 1]:
day = 1
month += 1
if month > 12:
month = 1
year += 1
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
month_days[1] = 29
else:
month_days[1] = 28
return year,month,day
# 初始条件
year = 2014
month = 11
day = 9
days = 1000
year,month,day = calculate_date(year,month,day,days)
print(f"{year}-{month:02d}-{day:02d}")
ok,今天就3题,别的明天再说,最近先做基础题。