初级python函数
这是一个愚蠢的问题,但在下面的代码中,我认为guess_compare函数失败了,因为它不能引用输入'guess'和'game word'。有没有关于如何修复的见解?代码如下:初级python函数,python,python-3.x,python-requests,programming-languages,python-3.6,Python,Python 3.x,Python Requests,Programming Languages,Python 3.6,这是一个愚蠢的问题,但在下面的代码中,我认为guess_compare函数失败了,因为它不能引用输入'guess'和'game word'。有没有关于如何修复的见解?代码如下: import random max_guesses=1 guess="" game_word="" def word_gen(): potential_guesses=["hello", "test", "never"] list_length=int(len(potential_guesses)) ga
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()
在这种情况下,您从未将game_word与word_gen分配。您还必须首先调用猜测函数 在代码的最后一行尝试以下操作:
guesser()
game_word = word_gen()
guess_compare()
我会停止使用全局变量,您倾向于通过在本地声明相同的命名变量来隐藏它们,假设您设置了一个全局变量,但它只是本地变量 我重新构造了您的一些代码,因此它应该在没有全局变量的情况下工作:
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
不使用全局变量似乎更难,但它消除了一个错误源
如果仍然需要,则需要声明要在函数中使用全局函数:
具有全局变量的某些函数:
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
输出:
myVar: 25
45
after myFunc: 45
something
after myOtherFunc: 45
你能用异常/回溯向我们证明它的失败吗?@JacobIRR picturebelow@JacobIRR很抱歉,我没有给pic的声誉,但是回溯是“if guess==game\u word[0]line random.choice['A','B','C']上的“字符串索引超出范围”给你这个列表中的一个随机元素-缩短你的单词。\u Get你从未调用过单词\u gen,所以你什么都没有…好的,所有这些都不起作用。谢谢你的帮助,我会玩一玩,让你知道我找到了什么。非常感谢!有兴趣了解变量赋值规则等,所以也会玩。谢谢!!@user9211054增加了全局变量的示例