【发布时间】:2021-04-02 18:23:41
【问题描述】:
我正在尝试解决此错误,但找不到解决方案。实际上代码在一段时间内运行良好,但突然开始出现错误:
"NameError: name 'number_exit' is not defined"
还有:
"NameError: name 'price_buy' is not defined"
代码正在生成一个随机数列表
import numpy as np
# This function generates a list of numbers under certain rules
def num_var_list():
global number_list, number_exit, number_target
number_list = []
number_target = number_exit
num_max_robot = (number_target * 20) / 100
while num_max_robot > 0:
num_robot = np.random.randint(1,int(num_max_robot))
if num_robot > number_target:
number_list.append(number_target)
else:
number_list.append(num_robot)
number_target = number_target - number_target
return number_list
# This function generates a random number between a certain range
def fun_price_buy():
global price_buy
price_buy = np.random.randint(50000,300000)
return price_buy
# This function generates a random number between a certain range
def fun_mx_buy():
global number_exit
number_exit = np.random.randint(50, 150)
return number_exit
lista_number_list = []
lista_price_buy = []
lista_mx_buy = []
# This loop append each function 50 times to a new list
while len(lista_price_buy) <= 50:
lista_number_list.append(num_var_list())
lista_price_buy.append(fun_price_buy())
lista_mx_buy.append(fun_mx_buy())
实际上,当Python 没有删除错误时,代码完全符合我的要求。所以我不确定如何调整它以让它在没有 NameError 警告的情况下工作。
我们将不胜感激任何帮助。谢谢!
【问题讨论】:
-
你应该开始向你的函数传递参数,而不是滥用
global来尝试将变量放入作用域 -
另外,您还没有将它们定义在函数范围之外,因此全局无法正常工作
-
num_var_list不能工作,你永远不会在循环中改变num_max_robot的值,所以这似乎是一个无限循环 -
@azro 不是无限循环。当我使用 "global" 定义变量时,甚至可以实际工作。但有时 Python 开始删除 NameErrors 并开始工作..我想知道如何在函数之外定义这些值,因为函数会为这些变量生成随机值..
标签: python list random var nameerror