我正在尝试制作一个数据记录代码,供用户输入动物的数量和年龄、出生率以及它们在这一代存活的机会。我尝试过使用return,但是当我运行程序时,变量仍然是0。你知道吗
在这里,我启动了变量
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():
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()
但是,变量保持在0
How many juveniles in Generation 0? 5
How many adults in Generation 0? 6
How many seniles in Generation 0? 7
What is the survival rate for juveniles? 0.75
What is the survival rate for adults? 1
What is the survival rate for seniles? 0
What is the birth rate? 2
The amount of juveniles in Generation 0 is 0
The amount of adults in Generation 0 is 0
The amount of seniles in Generation 0 is 0
The birth rate in Generation 0 is 0
The survival rate for juveniles in Generation 0 is 0
The survival rate for adults in Generation 0 is 0
The survival rate for seniles in Generation 0 is 0
变量的范围不一致。你知道吗
你可以这样做:
这是第一步。你知道吗
这样,“main”命名空间中的变量就与函数中的变量分开了。你知道吗
消除重复的下一步可能不是关心主命名空间中变量的分离,而是将它们视为元组:
消除重复和提高清晰度的进一步步骤包括:
正如其他人所说的,问题是对函数内部变量的赋值会创建新的变量,而不是将值赋给全局变量。这就是
global
关键字存在的原因。你知道吗在本例中,我将考虑使用一个类,因为您有许多相关的状态值可以一起操作。你知道吗
这将使您在操作生成数据时变得更容易,因为生成数据都绑定到单个对象中。你知道吗
变量的范围不正确。[函数内、类内或模块内声明的变量在程序的更高级别上是不可访问的-这里是在注释中发布的a short description of python scoping rules]-在这种情况下,在
generation_values()
中分配给的变量是本地定义的。你知道吗这样做肯定不是正确的方法,而是将变量声明为全局变量
generation_values()
将解决您的问题:(定义什么是做这件事的“理想方法”取决于您在编程研究中的位置&这会让我们走得太远)另一种处理方法是将变量作为参数传递给函数,并用赋值返回它们。。。但是它们有很多,传递它们可能会弄乱你的代码。你知道吗
您还可以将它们聚集在一个元组中,或者将它们包装在一个类中。你知道吗
相关问题 更多 >
编程相关推荐