python的入门练习

 

"""新冠肺炎病毒传染性非常强,其传染性系数约为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
欢迎指教!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

:642

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值