到目前为止,这是我的代码。我目前正在创建一个类似于刽子手游戏的程序,我不确定如何克服这个小驼峰。 ATM我无法将函数 loadwordlist():中定义的变量传递给名为 gethint()的第二个函数:有关如何操作的任何提示?
import random
def setup():
print("Reading Word List...")
print("Selecting Secret Word...")
print("A secret word has been selected...")
setup()
def loadwordlist():
word = open ('words.txt').read().splitlines()
secret_word = random.choice(word).lower()
guessed_word = []
guessed_letters = []
for letters in secret_word:
guessed_word.append('_')
return ' '.join(guessed_word)
print(loadwordlist())
total_guesses = 10
print(("You have {} guesses left").format(total_guesses))
def gethint():
loadwordlist()
guess = input("Please enter a guess:")
guess = guess.lower()
if guess in guessed_word:
print("You guessed Correctly")
guessed_letters.append(guess)
gethint()
答案 0 :(得分:0)
Ignacio建议将它们放在一个共同范围内。如果你明白这意味着什么,他是对的。鉴于您的代码,您可能是新手,因此您可能无法理解范围。在某些时候,谷歌'python范围'(没有引号),你会找到解释。
最小修复是将guessed_letters = []
移动到全局范围(任何函数之外)或gethint()
之内。此外,在gethint()
中,将loadwordlist()
的调用更改为guessed_word = loadwordlist()
。
最低限度修改的程序变为
import random
def setup():
print("Reading Word List...")
print("Selecting Secret Word...")
print("A secret word has been selected...")
setup()
def loadwordlist():
word = open ('words.txt').read().splitlines()
secret_word = random.choice(word).lower()
guessed_word = []
for letters in secret_word:
guessed_word.append('_')
return ' '.join(guessed_word)
print(loadwordlist())
total_guesses = 10
print(("You have {} guesses left").format(total_guesses))
guessed_letters = []
def gethint():
guessed_word = loadwordlist()
guess = input("Please enter a guess:")
guess = guess.lower()
if guess in guessed_word:
print("You guessed Correctly")
guessed_letters.append(guess)
gethint()
对于一个简单的程序,函数只是妨碍你,因为它们将变量限制在函数的范围内。另一个修复是删除函数语义(def行和调用它们的行),以便所有内容都在全局范围内:
import random
guessed_letters = []
guessed_word = []
print("Reading Word List...")
word = open ('words.txt').read().splitlines()
print("Selecting Secret Word...")
secret_word = random.choice(word).lower()
print("A secret word has been selected...")
for letters in secret_word:
guessed_word.append('_ ')
print(' '.join(guessed_word))
total_guesses = 10
print(("You have {} guesses left").format(total_guesses))
guess = input("Please enter a guess:")
guess = guess.lower()
if guess in guessed_word:
print("You guessed Correctly")
guessed_letters.append(guess)
我尽可能少地修改你的程序来说明差异;还有更多工作要做。例如,程序要求输入第一个字母,然后终止。
此外,它现在也不是'pythonesque'解决方案,但对于第一个程序,不要担心,只需通过使其工作来学习你学到的东西。在它工作之后,更多地学习python并根据你学到的东西进行改进。
我也是一个蟒蛇新手。祝你好运!