编写python函数 - 我做了一个条件但它是错误的

问题描述 投票:0回答:2

健康人口为150人,患病人口为120人。每天,有20%的健康人生病,10%的病人康复。请用 Python 编程语言编写一个函数,计算健康人和病人的平衡比例是多少。

首先我尝试做两个数学方程

H - healthy
C - sick

H_1 = 0.8H + 0.1C
C_2 = 0.9C + 0.2H

H_1 = 120 + 12 = 132
H_2 = 108 + 30 = 138

132:138

22:23

保持平衡的比例是多少?你能帮我写这个函数吗?

python function math statistics
2个回答
0
投票

为了解决这个问题,我们可以创建一个包含 n 行的数组(迭代次数直到达到每行包含的平衡:

  • n
    :迭代次数(行号)
  • h
    :健康人口数量
  • c
    :患病人数
  • err
    :错误值

我们定义一个函数来使这个数组称为

nhce

def nhce(h,c):
    i=[[0,h,c,None]]
    n=0
    while i[n][3]!=0:
        i.append([n:=i[n][0]+1, x:=round(0.8*i[n-1][1]+0.1*i[n-1][2]), y:=round(0.2*i[n-1][1]+0.9*i[n-1][2]),err:=(i[n-1][1]-x)**2+(i[n-1][2]-y)**2 ])
    return i

正如我们所见,这个函数将返回一个数组,我们可以如下使用它:

arr=nhce(150,120)
print(arr)

结果:

[[0, 150, 120, 无], [1, 132, 138, 648], [2, 119, 151, 338], [3, 110, 160, 162], [4, 104, 166, 72], [5, 100, 170, 32], [6, 97, 173, 18]、[7、95、175、8]、[8、94、176、2]、[9、93、177、2]、[10、92、178、 2], [11, 91, 179, 2], [12, 91, 179, 0]]

arr=nhce(150,120)
print("Equilibrium remain at {}:{} in iteration number {} ".format(arr[len(arr)-1][1],arr[len(arr)-1][2],arr[len(arr)-1][0]))

结果:

第 12 次迭代中平衡保持在 91:179


-1
投票

你可以试试这个

h = 150
s = 120

get_h = 0.1 #10% will get healthy
get_s = 0.2 #20% will get healthy

proportion_h = 150 / (150+120) #first proportion

delta = 1 #diffirence

while delta != 0:
    got_sick = h*get_s
    got_healthy = s*get_h
    h = int(h - got_sick + got_healthy)
    s = int(s - got_healthy + got_sick)
    
    delta = proportion_h - h /(h+s)
    proportion_h = h /(h+s) 
    proportion_s = 1-proportion_h

print(f'healthy : {h} , sick : {s}, proportion_h : {proportion_h*100}%,proportion_s : {proportion_s*100}%')
© www.soinside.com 2019 - 2024. All rights reserved.