<p>正如其他人所说的,问题是对函数内部变量的赋值会创建新的变量,而不是将值赋给全局变量。这就是<code>global</code>关键字存在的原因。你知道吗</p>
<p>在本例中,我将考虑使用一个类,因为您有许多相关的状态值可以一起操作。你知道吗</p>
<pre><code>class GenerationData(object):
def __init__(self, gen_number):
self.number = gen_number
self.birth_rate = 0
self.num_juveniles, self.num_adults, self.num_seniles = 0, 0, 0
self.juvenile_rate, self.adult_rate, self.senile_rate = 0.0, 0.0, 0.0
@classmethod
def read(cls, gen_number):
gen = cls(gen_number)
gen.num_juveniles = read_integer(
'How many juveniles in Generation {}?'.format(gen_number))
gen.num_adults = read_integer(
'How many adults in Generation {}?'.format(gen_number))
gen.num_seniles = read_integer(
'How many seniles in Generation {}?'.format(gen_number))
gen.juvenile_rate = read_float(
'What is the survival rate for juveniles? ')
gen.adult_rate = read_float('What is the survival rate for adults? ')
gen.senile_rate = read_float('What is the survival rate for seniles? ')
gen.birth_rate = read_integer('What is the birth rate? ')
def display(self):
print('The amount of juveniles in Generation', self.number,
'is', self.num_juveniles)
print('The amount of adults in Generation', self.number,
'is', self.num_adults)
print('The amount of seniles in Generation', self.number,
'is', self.num_seniles)
print('The birth rate in Generation', self.number,
'is', self.birth_rate)
print('The survival rate for juveniles in Generation', self.number,
'is', self.juvenile_rate)
print('The survival rate for adults in Generation', self.number,
'is', self.adult_rate)
print('The survival rate for seniles in Generation', self.number,
'is', self.senile_rate)
def read_integer(prompt):
return int(raw_input(prompt))
def read_float(prompt):
return float(raw_input(prompt))
first_generation = Generation.read(0)
first_generation.display()
</code></pre>
<p>这将使您在操作生成数据时变得更容易,因为生成数据都绑定到单个对象中。你知道吗</p>