【发布时间】:2020-09-08 10:59:13
【问题描述】:
我在制作刽子手游戏的过程中陷入了困境:
对于具有多个相同字母的单词,我希望程序将用户输入与单词相匹配,然后显示该字母的所有实例(就像在常规 Hangman 中一样)。
我创建了目标单词的副本并将所有字母替换为 #,然后每当用户发现复制“隐藏”版本的字母随着字母的发现而缓慢变化时,它适用于单个字母实例,但不适用于多个字母。
以下代码不可运行,因为第 24-29 行需要更改。
我了解了使用 def() 函数来帮助从字符串中提取多个索引,但是它们存储在一个列表中,我不知道如何以这种格式使用它们。我还不擅长 for 循环。
所以 TL;DR:第 24-29 行需要更改,以便找到所有相同的字母实例,然后使用这些索引更改隐藏的单词以发现所有找到的字母供用户查看。
def change_char(s, p, r):
return s[:p]+r+s[p+1:]
def find(s, ch):
return [i for i, ltr in enumerate(s) if ltr == ch]
word = "abigail" #Test Word to be guessed
edited_word = word.replace(word, "#" * len(word)) #making the second copy hidden
guessed_word = edited_word #copied word for uncovering attempt
win = 0
guess = 0
guesses_left = len(word)
print("Good luck! You have {} guesses left. Press ! to quit".format(guesses_left))
print(edited_word)
while win == 0:
guess = input()
if len(guess) >= 2: # checking for single inputs only
print("Valid inputs only! 1 character per guess, no numbers or symbols. Press ! to quit")
continue
elif "!" in guess: # checking if user wants to quit
break
elif guess.isnumeric(): # checking for numbers
print("Valid inputs only! 1 character per guess, no numbers or symbols. Press ! to quit")
continue
elif word.find(guess) != -1: # if character exists will return index, user guessed a character right!
# found_letter_index = word.find(guess) |||| this was my original code, it only wqorked with single letter instances
found_letter_index = find(word, guess) # new attempt that returns indexes but are stored in a list
found_letter = word[found_letter_index]
guessed_word = change_char(guessed_word, found_letter_index, found_letter)
print("test {}".format(guessed_word)) #test print for trouble shooting
elif word.find(guess) == -1: # user guessed character wrong
guesses_left -= 1
print("Guesses Left: {}".format(guesses_left))
elif guesses_left == 0: # failed too many times, game exits
print("You loose, no more guesses left!")
break
这是一个帮助我了解更多关于 python 的项目,到目前为止,我只是通过谷歌搜索和阅读 python 文档来完成它,所以如果你能提供一个解释和你的答案,我们将不胜感激并极大地帮助我!
提前致谢。
【问题讨论】:
标签: python-3.x for-loop indexing