用户:
沉著的飞叶龙uZWJ查看:2 回复:8 评论:2 创建时间:2020-03-21T09:09:17
【作品展示】

【作品介绍】
大约一个月前就已经成型,最近几天做了最后的修改。这是一个强大的疫情模拟器,大家往里输入参数,观看疫情发展情况。在新冠病毒“全球化”的危机时刻,让我们一起对病毒宣战吧!
【作品源代码】
import math
import turtle
import random#准备
people_1 = False
people_2 = True
people_3 = True
people_4 = True
people_5 = True
people_6 = True
people_7 = True
people_8 = True
people_9 = True
people_10 = True
people_11 = True
people_12 = True
people_13 = True
people_14 = True
people_15 = True
people_16 = True
people_17 = True
people_18 = True
people_19 = True
people_20 = True
people_21 = True
people_22 = True
people_23 = True
people_24 = True
people_25 = True
people_26 = True
people_27 = True
people_28 = True
people_29 = True
people_30 = True
people_31 = True
people_32 = True
people_33 = True
people_34 = True
people_35 = True
people_36 = True
people_37 = True
#每个人的初始健康状态
def distance(x1, y1, x2, y2):
return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2)
#↑两点间的距离公式
#↓对列表中感染者、幸存者的数量检测
def check(List):
infect=0
alive=0
for i in List:
if i:
alive+=1
else:
infect+=1
return alive,infect
s = turtle.Screen()
s.setup(700,700)#设置屏幕的大小
people1 = turtle.Pen()
people2 = turtle.Pen()
people3 = turtle.Pen()
people4 = turtle.Pen()
people5 = turtle.Pen()
people6 = turtle.Pen()
people7 = turtle.Pen()
people8 = turtle.Pen()
people9 = turtle.Pen()
people10 = turtle.Pen()
people11 = turtle.Pen()
people12 = turtle.Pen()
people13 = turtle.Pen()
people14 = turtle.Pen()
people15 = turtle.Pen()
people16 = turtle.Pen()
people17 = turtle.Pen()
people18 = turtle.Pen()
people19 = turtle.Pen()
people20 = turtle.Pen()
people21 = turtle.Pen()
people22 = turtle.Pen()
people23 = turtle.Pen()
people24 = turtle.Pen()
people25 = turtle.Pen()
people26 = turtle.Pen()
people27 = turtle.Pen()
people28 = turtle.Pen()
people29 = turtle.Pen()
people30 = turtle.Pen()
people31 = turtle.Pen()
people32 = turtle.Pen()
people33 = turtle.Pen()
people34 = turtle.Pen()
people35 = turtle.Pen()
people36 = turtle.Pen()
people37 = turtle.Pen()#37个人类
people1.penup()
people2.penup()
people3.penup()
people4.penup()
people5.penup()
people6.penup()
people7.penup()
people8.penup()
people9.penup()
people10.penup()
people11.penup()
people12.penup()
people13.penup()
people14.penup()
people15.penup()
people16.penup()
people17.penup()
people18.penup()
people19.penup()
people20.penup()
people21.penup()
people22.penup()
people23.penup()
people24.penup()
people25.penup()
people26.penup()
people27.penup()
people28.penup()
people29.penup()
people30.penup()
people31.penup()
people32.penup()
people33.penup()
people34.penup()
people35.penup()
people36.penup()
people37.penup()#让移动不留痕迹
people1.speed(0)
people2.speed(0)
people3.speed(0)
people4.speed(0)
people5.speed(0)
people6.speed(0)
people7.speed(0)
people8.speed(0)
people9.speed(0)
people10.speed(0)
people11.speed(0)
people12.speed(0)
people13.speed(0)
people14.speed(0)
people15.speed(0)
people16.speed(0)
people17.speed(0)
people18.speed(0)
people19.speed(0)
people20.speed(0)
people21.speed(0)
people22.speed(0)
people23.speed(0)
people24.speed(0)
people25.speed(0)
people26.speed(0)
people27.speed(0)
people28.speed(0)
people29.speed(0)
people30.speed(0)
people31.speed(0)
people32.speed(0)
people33.speed(0)
people34.speed(0)
people35.speed(0)
people36.speed(0)
people37.speed(0)#加速实验
people1.color('red', 'red')
people2.color('blue', 'blue')
people3.color('blue', 'blue')
people4.color('blue', 'blue')
people5.color('blue', 'blue')
people6.color('blue', 'blue')
people7.color('blue', 'blue')
people8.color('blue', 'blue')
people9.color('blue', 'blue')
people10.color('blue', 'blue')
people11.color('blue', 'blue')
people12.color('blue', 'blue')
people13.color('blue', 'blue')
people14.color('blue', 'blue')
people15.color('blue', 'blue')
people16.color('blue', 'blue')
people17.color('blue', 'blue')
people18.color('blue', 'blue')
people19.color('blue', 'blue')
people20.color('blue', 'blue')
people21.color('blue', 'blue')
people22.color('blue', 'blue')
people23.color('blue', 'blue')
people24.color('blue', 'blue')
people25.color('blue', 'blue')
people26.color('blue', 'blue')
people27.color('blue', 'blue')
people28.color('blue', 'blue')
people29.color('blue', 'blue')
people30.color('blue', 'blue')
people31.color('blue', 'blue')
people32.color('blue', 'blue')
people33.color('blue', 'blue')
people34.color('blue', 'blue')
people35.color('blue', 'blue')
people36.color('blue', 'blue')
people37.color('blue', 'blue')#初始颜色,people1是初始感染者,为红色;其余为蓝色
all_pen = [people1, people2, people3, people4, people5, people6, people7, people8, people9, people10, people11, people12, people13, people14, people15, people16, people17, people18,
people19, people20, people21, people22, people23, people24, people25, people26, people27, people28, people29, people30, people31, people32, people33, people34, people35, people36, people37]
people_health = [people_1, people_2, people_3, people_4, people_5, people_6, people_7, people_8, people_9, people_10, people_11, people_12, people_13, people_14, people_15, people_16, people_17, people_18,
people_19, people_20, people_21, people_22, people_23, people_24, people_25, people_26, people_27, people_28, people_29, people_30, people_31, people_32, people_33, people_34, people_35, people_36, people_37]
#将每个人及他们的健康状态存入列表
hospital = int(input('输入初始医疗资源数量'))
hospital_reaction_time = int(input('输入医院反应时间'))
people_speed = int(input('输入人口流动速度'))
jishi = 1
infect_distance = int(input('输入最大传染距离'))
cure_speed = int(input('输入一天治疗几名患者'))
shengchanlv = int(input('输入医疗资源生产效率(几天一个)'))#输入参数
for i in all_pen:
i.goto(random.uniform(-350, 350), random.uniform(-350,350))#初始位置
while True:
for i in all_pen:
i.setheading(random.uniform(0, 360))
i.forward(people_speed)#所有人移动
for i in all_pen:
if (i.xcor() > 350):
i.setx(350)
if (i.ycor() > 350):
i.sety(350)
if (i.xcor() < -350):
i.setx(-350)
if (i.ycor() < -350):
i.sety(-350)#将出界者拉回屏幕
for i in range(len(all_pen)):
for j in range(len(all_pen)):
if (distance(all_pen[i].xcor(), all_pen[i].ycor(), all_pen[j].xcor(), all_pen[j].ycor()) <= infect_distance) and (not people_health[i] or not people_health[j]):
all_pen[i].color('red', 'red')
all_pen[j].color('red', 'red')
people_health[i] = False
people_health[j] = False#用穷举法对所有感染情况进行判断,更新感染者和被感染者的颜色
if jishi==hospital_reaction_time + 1:
print('医院已开始工作!')#医院反应后开始工作
if jishi > hospital_reaction_time:
for i in range(cure_speed):
for i in people_health:
if hospital <= 0:
continue#医疗资源用完时无法工作
if not i:
people_health[people_health.index(i)]=True
hospital-=1
break#每天治疗 cure_speed 名感染者
for i in range(len(all_pen)):
if people_health[i]:
all_pen[i].color('blue','blue')#更新治愈者的颜色
print('Day',jishi)
print('医疗资源还够',hospital,'人使用')
a,b=check(people_health)
print('幸存者有',a,'位','感染者有',b,'位')
print('幸存者占比为',str(round(a/37*100,3))+'%','感染者占比为',str(round(b/37*100,3))+'%')#数据报告
if a==0:
print('人类已被全部感染!') # 结果报告
break
if b==0:
print('人类已被全部治愈!') # 结果报告
break
jishi+=1#记录循环次数的变量值+1
if jishi%shengchanlv==0:
hospital+=1#每几天生产出一人份的医疗物资
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn好
很好
非常好
真的很好
哇呼特别好
真的是十分好
再加上个离谱好
莫扎特作曲说这好
贝多芬被聋耳朵得好
爱因斯坦相对而言很好
诸葛孔明放弃蜀国说你好
科比起喵回生坐直升机道好
姜维把邓艾扫地出门选择叫好
喵队长没有跳最后的舞叫说好
这真的说的非常真的离谱特别太好
吉吉喵活动喵主播喵老鱼头都来叫好
辣稽滑稽罗南德拉克斯爵士勋章代码顶
星爵尬舞着帮你一起顶顶罗南顶顶顶
灭霸用了无限手套狂打响指为你顶
吕布抛弃了貂禅而选择了帮你顶
汉高祖挥师杀向东罗马为你顶
秦始皇站在阿房宫上使劲顶
孔子亲自拜你为师天天顶
老子看了会用道德经顶
就算顶到史前也要顶
接着使出葵花宝顶
总之把它顶到顶
再加上千斤顶
用尽全力顶
不得不顶
必须顶
要顶
顶
点赞0
评论
好
很
好
很好
非常好
真的很好
哇呼特别好
真的是十分好
再加上个离谱好
莫扎特作曲说这好
贝多芬被聋耳朵得好
爱因斯坦相对而言很好
诸葛孔明放弃蜀国说你好
科比起喵回生坐直升机道好
姜维把邓艾扫地出门选择叫好
喵队长没有跳最后的舞叫说好
这真的说的非常真的离谱特别太好
吉吉喵活动喵主播喵老鱼头都来叫好
辣稽滑稽罗南德拉克斯爵士勋章代码顶
星爵尬舞着帮你一起顶顶罗南顶顶顶
灭霸用了无限手套狂打响指为你顶
吕布抛弃了貂禅而选择了帮你顶
汉高祖挥师杀向东罗马为你顶
秦始皇站在阿房宫上使劲顶
孔子亲自拜你为师天天顶
老子看了会用道德经顶
就算顶到史前也要顶
接着使出葵花宝顶
总之把它顶到顶
再加上千斤顶
用尽全力顶
不得不顶
必须顶
要
好
很好
非常好
真的很好
哇呼特别好
真的是十分好
再加上个离谱好
莫扎特作曲说这好
贝多芬被聋耳朵得好
爱因斯坦相对而言很好
诸葛孔明放弃蜀国说你好
科比起喵回生坐直升机道好
姜维把邓艾扫地出门选择叫好
喵队长没有跳最后的舞叫说好
这真的说的非常真的离谱特别太好
吉吉喵活动喵主播喵老鱼头都来叫好
辣稽滑稽罗南德拉克斯爵士勋章代码顶
星爵尬舞着帮你一起顶顶罗南顶顶顶
灭霸用了无限手套狂打响指为你顶
吕布抛弃了貂禅而选择了帮你顶
汉高祖挥师杀向东罗马为你顶
秦始皇站在阿房宫上使劲顶
孔子亲自拜你为师天天顶
老子看了会用道德经顶
就算顶到史前也要顶
接着使出葵花宝顶
总之把它顶到顶
再加上千斤顶
用尽全力顶
不得不顶
必须顶
要顶
顶
顶
顶
好
非常好
真的很好
哇呼特别好
真的是十分好
再加上个离谱好
莫扎特作曲说这好
贝多芬被聋耳朵得好
爱因斯坦相对而言很好
诸葛孔明放弃蜀国说你好
科比起喵回生坐直升机道好
姜维把邓艾扫地出门选择叫好
喵队长没有跳最后的舞叫说好
这真的说的非常真的离谱特别太好
吉吉喵活动喵主播喵老鱼头都来叫好
辣稽滑稽罗南德拉克斯爵士勋章代码顶
星爵尬舞着帮你一起顶顶罗南顶顶顶
灭霸用了无限手套狂打响指为你顶
吕布抛弃了貂禅而选择了帮你顶
汉高祖挥师杀向东罗马为你顶
秦始皇站在阿房宫上使劲顶
孔子亲自拜你为师天天顶
老子看了会用道德经顶
就算顶到史前也要顶
接着使出葵花宝顶
总之把它顶到顶
再加上千斤顶
用尽全力顶
不得不顶
必须顶
要顶
顶
点赞0
评论