<p>变量的范围不正确。[函数内、类内或模块内声明的变量在程序的更高级别上是不可访问的-这里是在注释中发布的<a href="https://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules">a short description of python scoping rules</a>]-在这种情况下,在<code>generation_values()</code>中分配给的变量是本地定义的。你知道吗</p>
<p>这样做肯定不是正确的方法,而是将变量声明为全局变量
<code>generation_values()</code>将解决您的问题:(定义什么是做这件事的“理想方法”取决于您在编程研究中的位置&这会让我们走得太远)</p>
<pre><code>Gen0_J=0
Gen0_A=0
Gen0_S=0
Birth_rate=0
Srate_J=0
Srate_A=0
Srate_S=0
New_generations=5
def generation_values():
global Gen0_J,Gen0_A,Gen0_S,Srate_J,Srate_A,Srate_S,Birth_rate
Gen0_J=int(input("How many juveniles in Generation 0? "))
Gen0_A=int(input("How many adults in Generation 0? "))
Gen0_S=int(input("How many seniles in Generation 0? "))
Srate_J=float(input("What is the survival rate for juveniles? "))
Srate_A=float(input("What is the survival rate for adults? "))
Srate_S=float(input("What is the survival rate for seniles? "))
Birth_rate=int(input("What is the birth rate? "))
return Gen0_J,Gen0_A,Gen0_S,Srate_J,Srate_A,Srate_S,Birth_rate
def display_values():
print("\nThe amount of juveniles in Generation 0 is",Gen0_J)
print("The amount of adults in Generation 0 is",Gen0_A)
print("The amount of seniles in Generation 0 is",Gen0_S)
print("The birth rate in Generation 0 is",Birth_rate)
print("The survival rate for juveniles in Generation 0 is",Srate_J)
print("The survival rate for adults in Generation 0 is",Srate_A)
print("The survival rate for seniles in Generation 0 is",Srate_S)
generation_values()
display_values()
</code></pre>
<p>另一种处理方法是将变量作为参数传递给函数,并用赋值返回它们。。。但是它们有很多,传递它们可能会弄乱你的代码。你知道吗</p>
<p>您还可以将它们聚集在一个元组中,或者将它们包装在一个类中。你知道吗</p>