如此愚蠢的问题,但在下面的代码中,guess_compare函数失败了(我认为因为它无法引用输入'猜测'和'游戏字'。有关如何修复的任何见解?代码如下:
import random
max_guesses=1
guess=""
game_word=""
def word_gen():
potential_guesses=["hello", "test", "never"]
list_length=int(len(potential_guesses))
game_word=potential_guesses[random.randint(1-1,list_length-1)]
print (game_word)
def guesser():
guess=input("give a letter...")
print(guess)
def guess_compare():
if guess==game_word[0]:
print("correct")
else:
print("wrong")
guess_compare()
答案 0 :(得分:1)
我会退出使用全局变量,你倾向于通过在本地声明相同的命名变量来隐藏它们,假设你设置了一个全局但它只是本地变量。
我重新构建了一些代码,因此它应该在没有全局变量的情况下工作:
import random
def word_gen():
"""Returns a ramdom choice word form a fixed list"""
return random.choice(["hello", "test", "never"])
def guesser():
"""Returns an input from the user - ask for 1 letter"""
return input("give a letter...")
def guess_compare():
"""Main game loop for "guess my word character by character".
Gets a random word. Asks for letters until the correct
one is given. Prints out status messages regarding correctness
of guesses. Stops when all characters were guessed correctly."""
game_word = word_gen()
soFar = "" # for status-message, text correctly guessed so far
for ch in game_word: # check for every character in word
while(guesser() != ch): # guess until char is correct
print("wrong")
else: # finally, one more ch solved...
soFar += ch
print("you guessed correctly: " + soFar)
print("you solved it!") # finished
guess_compare() # start the game
使用无全局变量可能看起来更难,但它会消除一个错误来源。
如果你仍然想要它们,你需要声明你想在你的功能中使用全局:
一些带有全局变量的函数:
def myFunc():
global myVar # declare that we use the global here
myVar += 20 # modifying the global one here
print (myVar)
def myOtherFunc():
myVar = "something" # this is just local , not the global one
print (myVar)
myVar = 25
print ("myVar: ", myVar)
myFunc()
print ("after myFunc: ", myVar)
myOtherFunc()
print ("after myOtherFunc: ", myVar)
输出:
myVar: 25
45
after myFunc: 45
something
after myOtherFunc: 45
答案 1 :(得分:0)
在这种情况下,您从未使用word_gen()分配game_word。你还必须先调用你的猜测函数。
在代码的最后一行尝试这个:
guesser()
game_word = word_gen()
guess_compare()