我正在制作一个程序,让你猜出从0到给定数字g的数字。但是一个启动新游戏接缝的功能永远不会定义变量。
import random
g = 100
def new_game():
secret_number = random.randint(0,g)
return secret_number
def input_guess(x):
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
new_game()
input_guess(33)
无论我改变什么,接缝总是说secret_number没有被定义
NameError: name 'secret_number' is not defined
任何帮助?
答案 0 :(得分:1)
secret_number
是new_game()
函数中的局部变量,因此,您必须全局存储它:
secret_number = new_game()
或
将secret_number作为参数传递给input_guess()
:
def input_guess(x, secret_number):
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
答案 1 :(得分:0)
这里有两个选项,一个是使secret_number
成为一个全局变量,所以任何函数都可以访问它,但是这通常不是一个很好的选择,正如@alexander所说,所以这不是建议的方式:
import random
g = 100
def new_game():
global secret_number
secret_number = random.randint(0,g)
return secret_number
def input_guess(x):
global secret_number
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
new_game()
input_guess(33)
我在这里所做的是使全局secret_number
变量,这意味着该变量在所有方法中都是相同的。
更好的方法是在返回后存储secret_number
的值,并将其作为参数传递给input_guess
:
import random
g = 100
def new_game():
secret_number = random.randint(0,g)
return secret_number
def input_guess(x, secret_number):
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
number = new_game()
input_guess(33, number)
这使得number
等于secret_number
返回的new_game()
,然后将该变量提供给input_guess()
,以便为其提供密码。
答案 2 :(得分:0)
试试这个:
import random
g = 100
def new_game():
secret_number = random.randint(0,g)
return secret_number
def input_guess(x, secret_number):
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
secret_number = new_game()
input_guess(33, secret_number)
因为secret_number
不是全局变量,所以input_guess
方法并不知道&#34;它是什么&#34;。
答案 3 :(得分:0)
感谢所有帮助。我自己设法解决了这个问题,这有点像Joykills的回答
import random
g = 100
secret_number = 0
def new_game():
global secret_number
这样我访问全局变量secret_number并允许在我的函数中更改它
secret_number = random.randint(0,g)
return secret_number
def input_guess(x):
x = int(x)
print "guess was",x
if x > secret_number:
print "lower"
elif x < secret_number:
print "higher"
if x == secret_number:
print "correct"
new_game()
input_guess(33)