【发布时间】:2021-05-15 20:46:50
【问题描述】:
我是编程新手,我正在尝试编写两个函数,它们在它们之间生成一个数字,该数字代表给定人口在给定天气下产生的旅行者数量。这两个函数自己工作,但是当我尝试让第一个函数 (weather_gen) 将其输出馈送到第二个函数 (traveller_gen) 时,我收到以下错误: UnboundLocalError:分配前引用的局部变量“y”。 但是,我知道第一个函数的返回值 x 在第二个函数中,因为 print(x) 命令有效。只有当我要求第二个函数返回 y 时才会出现问题。
import random
season = "summer"
p=100
def weather_gen(season):
weathers = ("snow", "rain", "drizzle", "sun", "gorgeous")
if season == "spring":
x = (random.choices(weathers, weights=(10,30,30,20,10), k=1))
if season == "summer":
x = (random.choices(weathers, weights=(0,10,10,50,30), k=1))
if season == "autumn":
x = (random.choices(weathers, weights=(5,20,25,35,10), k=1))
if season == "winter":
x = (random.choices(weathers, weights=(20,25,25,15,5), k=1))
return x
x = weather_gen(season)
def traveller_gen(x):
print(x)
if x == "snow":
t = random.randint(0, 10)
y = (t/100)*p
if x == "rain":
t = random.randint(40, 55)
y = (t/100)*p
if x == "drizzle":
t = random.randint(50, 75)
y = (t/100)*p
if x == "sun":
t = random.randint(85, 100)
y = (t/100)*p
if x == "gorgeous":
t = random.randint(100, 125)
y = (t/100)*p
return y
traveller_gen(x)
我是否遗漏了一些非常明显的东西? 最好的祝愿, 保存
【问题讨论】:
-
random.choices返回一个列表。x不等于traveller_gen中的任何字符串,因为它是一个列表,而不是一个字符串。 -
感谢您的帮助。我会处理变量名。
标签: python