我正在为我的计算机科学课编写一个刽子手游戏,我正在尝试创建一个字典,其中包含给定单词的每个字符,以及0表示是否已被猜到。
gamestart = 0
guesses = 5
gamewin = 0
while gamestart == 0:
word = input("Welcome to hangman!" + "\nEnter a word: ")
if word.find(" ") > -1:
print("\nSorry Please use one word only!\n")
elif word.find(" ") == -1:
gamestart = 1
for i in range(len(word)):
wordspacing = [0] * i
wordstore = list(word)
wordstore = dict(zip(wordspacing, wordstore))
print(wordstore)
然而,当我尝试将两个列表放在一起时,我得到了输出:
Welcome to hangman!
Enter a word: word
{0: 'r'}
有人可以确定发生这种情况的原因。我还想在效率方面受到一些批评。
答案 0 :(得分:1)
问题是你正在为字母制作0
字典,每个字只能有一个值。
尝试使用词典理解
wordstore = {letter: 0 for letter in word}
答案 1 :(得分:1)
要使用您的方法获得所需的输出,您需要切换压缩对象的顺序
wordstore = dict(zip(wordstore, wordspacing))
同样对于字面间距,您不希望不断为wordspacing
分配值,而且由于i的最后一个值为3,因此最终只能使用[0,0,0]
代替[0,0,0,0]
而不是4.所以请使用以下
wordspacing = [0] * len(word)