[我正在尝试用python 2制作子手游戏,并且我相信我尝试存储用户知道的有关单词的信息的方式(例如,如果他们猜到了“ v”和“ a”并且字母是茄子,我指的是用户会看到的“信息”。因此,我的问题如下:存储可变变量的更有效方法是什么,就像我希望的那样,可变变量将很容易更新?
secret_word = 'tracy'
dashes = ""
def get_guess():
while True:
guess = input("Guess: ")
if len(guess) != 1:
print "Your guess must be exactly one character!"
elif not guess.islower():
print "Your guess must be a lowercase letter!"
else:
break
return guess
def update_dashes(secret_word, dashes, guess):
for letter in secret_word:
if letter == guess:
dashes += guess
else:
dashes += "-"
return dashes
while True:
if guess in secret_word:
print "That letter is in the secret word!"
dashes = update_dashes(secret_word, dashes, get_guess())
else:
print "That letter is not in the secret word!"
需要更新的部分很可能是update_dashes
功能。任何帮助,将不胜感激。
而不是将游戏状态存储在--a--
形式的字符串中,您可以考虑使用list。列表中的每个条目都可以代表一个字母及其状态。在下面的示例中,boolean values列表用于存储密码中是否已显示每个字母。
secret_word = 'tracy'
revealed_letters = [False] * len(secret_word) # all letters start off as not revealed
def make_guess(guessed_letter):
any_letter_revealed = False
for i in range(len(secret_word)):
secret_letter = secret_word[i]
if secret_letter == guessed_letter:
any_letter_revealed = True
revealed_letters[i] = True
return any_letter_revealed
def get_hidden_word():
return ''.join([secret_word[i] if revealed_letters[i] else '-' for i in range(len(secret_word))])
while True:
print(get_hidden_word())
guess = raw_input("Guess a letter: ")
if make_guess(guess):
print("That letter is in the secret word!")
else:
print("That letter is not in the secret word.")
if all(revealed_letters):
print("You win! The secret word was:")
print(secret_word)
break