用户:星空牧场查看:0 回复:3 评论:0 创建时间:2020-05-07T19:41:11
【作品展示】

【作品介绍】
疫情传播这么快,竟然还有人不以为然!让我们来看看有多么可怕:蓝色点是正常人,红色点是感染者。初始感染者只有一人。即一个红点。
我们根据数学指数爆炸函数图像编写出了程序,看看随着时间的推移,
红点会多成什么样😮【仔细看哦】
【作品源代码】
import turtle
import random
try:
script = '''疫情传播这么快,竟然还有人不以为然!让我们来看看有多么可怕:
蓝色点是正常人,红色点是感染者。初始感染者只有一人。即一个红点。棕色点
表示治愈出院者。我们根据数学指数爆炸函数图像编写出了程序,看看随着时间的推移,
红点会多成什么样【惊讶】【仔细看哦!】'''
screen = turtle.Screen()
screen.title('2019-CoronaVirus')
screen_width = 900
screen_height = 900
screen.setup(screen_width, screen_height)
screen.setworldcoordinates(0, 0, screen_width, screen_height)
pen = turtle.Pen()
pen.speed(0)
pen.hideturtle()
document_axis = []
#绘制初始2000名正常人
def init_normal():
for i in range(800):
pen.pencolor('sky blue')
pen.penup()
x = random.randint(0, screen_width)
y = random.randint(0, screen_height)
storage = (x, y)
pen.goto(x, y)
pen.pendown()
pen.dot()
document_axis.append(storage)
#print(document_axis)
def create_grid():
pen.pencolor('black')
pen.penup()
pen.goto(0, screen_height / 3 * 1)
pen.pendown()
pen.forward(screen_width)
pen.penup()
pen.goto(0, screen_height / 3 * 2)
pen.pendown()
pen.forward(screen_width)
pen.penup()
pen.goto(screen_width / 3 * 1, screen_height)
pen.pendown()
pen.right(90)
pen.forward(screen_height)
pen.penup()
pen.goto(screen_width / 3 * 2, screen_height)
pen.pendown()
pen.forward(screen_height)
def create_virus():
pen.penup()
pen.goto(random.choice(document_axis))
pen.pendown()
pen.pencolor('red')
pen.dot()
def virus_multiplied():
pen.penup()
pen.goto(random.choice(document_axis))
pen.pendown()
pen.pencolor('red')
pen.dot()
def func_controller():
create_grid()
init_normal()
create_virus()
for i in range(20):
for j in range(pow(2, i+1)):
virus_multiplied()
#curement()
'function out of order or function have not been fully developed'
#def curement():
#List = []
#hospital_num = 10
#total_possible = hospital_num * 10
#real_cure_num = int(total_possible / 5 * 4)
#for i in range(real_cure_num):
#List.append(1)
#for i in range(len(List)):
#pen.pencolor('pink')
#pen.penup()
#pen.goto(random.choice(document_axis))
#pen.pendown()
#pen.dot()
except:
print('您的体验已结束,疫情期间,注意防护哦~')
else:
func_controller()
turtle.done()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cnimport 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))#初始位置
点赞0
评论
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 inrange(len(all_pen)):
for j inrange(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]ornot 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 inrange(cure_speed):
for j in people_health:
if hospital <= 0:
continue#医疗资源用完时无法工作
ifnot j:
people_health[people_health.index(j)]=True
hospital-=1
break#每天治疗 cure_speed 名感染者
for i inrange(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#每几天生产出一人份的医疗物资
点赞0
评论