python新手的入门练习

111 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

"""病毒传染性非常强,其传染性系数约为4,即每个感染病毒的人每天可传染给4个密切接触者。某学校共有学生2万人,假设有1个同学感染了病毒。 (1)问几天后可传染所有同学? (2)如果全校所有同学都带上口罩,可降低75%的感染概率,即每人每天会传染1个同学,则几天后会传染全校同学? (3)学校设置了隔离房间,假设病毒的潜伏期为7天,潜伏期内传染性不变,第8天发病后的同学会自觉隔离,全校同学戴口罩上学,问几天后会传染全校同学? 编程解决以上三个问题,输出三种情况下的每日新增和累计病例数。格式为:第{0}天,新增确诊{1}人,累计确诊{2}人,累计隔离{3}人(前两问不需要计算隔离人数)"""

def day_new(infect_people):   
    Stu_1 = 1                   
    day = 0
    for i in range(1, 10000):
        # 累计确诊
        Stu_2 = Stu_1 * infect_people + Stu_1
        # 新增确诊
        New_Stu_1 = Stu_2 - Stu_1
        Stu_1 = Stu_2
        day += 1
        print(str.format("第{0}天,新增确诊{1}人,累计确诊{2}人", day, New_Stu_1, Stu_2))
        if Stu_2 * infect_people >= 20000 - Stu_2:
            print(str.format("第{0}天,新增确诊{1}人,累计确诊20000人", day + 1, 20000 - Stu_2))
            print(str.format("{0}天可以传染所有同学", day + 1))
            break
 
 
# 1.几天可以传染所有同学
print("如果每人每天传染四个人:")
day_new(4)
print("---------------------------------------------------------")
# 2.如果全校所有同学都带上口罩,可降低75%的感染概率,即每人每天会传染1个同学,则几天后会传染全校同学?
print("如果每人每天传染一个人:")
day_new(1)
print("---------------------------------------------------------")
# 3.学校设置了隔离房间,假设病毒的潜伏期为7天,潜伏期内传染性不变,第8天发病后的同学会自觉隔离,全校同学戴口罩上学,问几天后会传染全校同学?
Stu_1 = 1
day = 0
Stu_2_list = []
for i in range(1, 10000):
    day += 1
    if day < 8:
        # 累计确诊
        Stu_2 = Stu_1 * 1 + Stu_1
        # 确诊列表
        Stu_2_list.append(Stu_2)
        # 新增确诊
        New_Stu_1 = Stu_2 - Stu_1
        Stu_1 = Stu_2
        print(str.format("第{0}天,新增确诊{1}人,累计确诊{2}人,隔离0人", day, New_Stu_1, Stu_2))
    if day >= 8:
        a = Stu_2_list[day - 8]
        # 累计确诊
        Stu_2 = Stu_1 * 1 + Stu_1 - a
        # 确诊列表
        Stu_2_list.append(Stu_2)
        # 新增确诊
        New_Stu_1 = Stu_2 - Stu_1
        Stu_1 = Stu_2
        print(str.format("第{0}天,新增确诊{1}人,累计确诊{2}人,隔离{3}人", day, New_Stu_1, Stu_2, a))
        if Stu_2 * 1 >= 20000 - Stu_2:
            print(str.format("第{0}天,新增确诊{1}人,累计确诊20000人", day + 1, 20000 - Stu_2))
            print(str.format("{0}天可以传染所有同学", day + 1))
            break

如有问题欢迎指导交流!!