python基础知识点(蓝桥杯python科目个人复习计划69)

做些基础题

第一题:微生物增值

题目描述:

假设有两种微生物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题,别的明天再说,最近先做基础题。 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值