我正在制作一个刽子手游戏并且发现我的方法有问题需要更新答案。我有一个变量,它将下划线添加到玩家需要猜测的单词中的字母数量。但是当玩家猜到一个正确的字母时,我无法弄清楚如何有效地更新它。
这是我的代码
import random
'''
HANGMAN IMAGE
print(" _________ ")
print("| | ")
print("| 0 ")
print("| /|\\ ")
print("| / \\ ")
print("| ")
print("| ")
'''
def game():
print('''Welcome to hangman, you must guess letters to fill in the word.
Incorrect guesses will use up a turn, you have 7 turns before you lose.''')
lines = open("wordBank.txt").read()
line = lines[0:]
words = line.split()
myword = random.choice(words).lower()
letters = len(myword)
print("Your word has " + str(letters) + " letters.")
underscores = ""
for x in range(0, letters):
underscores += "_ "
print(underscores)
print(myword)
l = set(myword)
turn = 0
guesses = []
def guess():
thisGuess = input("Type a letter and press Enter(Return) to guess: ")
if thisGuess.lower() in l:
else:
print("Boo")
guess()
game()
答案 0 :(得分:2)
您可能需要重新提问,因为您不清楚自己在问什么。但你应该看看字符串拼接。如果他们猜到字母“a”并且它进入第三个插槽那么你可以做类似的事情
underscores[:2] + 'a' + underscores[3:]
适应您的代码但是会用“a”替换第3个下划线。
更新: 不要使用集合,随时查找索引。试试这样的事情
for index, letter in enumerate(my_word):
if letter == guessed_letter:
if not index == len(my_word) -1
underscores = underscores[:index] + letter + underscores[index+1:]
else:
underscores = undescores[:-1] + letter
答案 1 :(得分:1)
另一种可能的方法(在Python 2.7中,见下面的3):
trueword = "shipping"
guesses = ""
def progress():
for i in range(len(trueword)):
if trueword[i] in guesses:
print trueword[i],
else:
print "-",
print ""
这可以通过检查每个字母是否已被猜到in guesses
并打印该字母来起作用。如果没有猜到,则会打印-
。当您在打印结束时放置逗号(如print "-",
)时,它不会自动打印换行符,因此您可以继续在同一行上打印。 print ""
打印带有换行符的空字符串,完成该行。
然后猜测变成:
guesses += guess
输出是:
猜测= ''
- - - - - - - -
猜测= 'sip'
s - i p p i - -
在Python 3中:
trueword = "shipping"
guesses = ""
def progress():
for i in range(len(trueword)):
if trueword[i] in guesses:
print(trueword[i], end='')
else:
print("-", end='')
print('')
添加end=''
参数以删除换行符,而不是逗号。如果您想要它们之间的空格,您也可以添加sep=' '
来指定分隔符。
另外,因为列表理解很棒(这在2.7& 3中有效):
def progress():
ans = [word[x] if word[x] in guesses else '-' for x in range(len(word))]
print(' '.join(ans))
通过list comprehensions做同样的事情......这是python中非常强大的功能。