"""新冠肺炎病毒传染性非常强,其传染性系数约为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
欢迎指教!