我刚刚写了一个程序来玩Hangman游戏,但是有一个问题困扰着我,我一直没能弄清楚。
程序正确地评估所选字符是否在要猜测的单词中,以及它在单词中的位置(即使该字符出现不止一次)。尽管如此,在玩游戏的时候,不管你完全猜到了这个词,还是你已经没有生命了,你都需要比需要多一个回合。
比如说,你必须猜到“你好”这个词。我希望程序运行的方式如下:
转1:'h‘。转2: e。第三圈:“我”。转4圈:O。程序应该停止在这里,但它需要另一个字符(任何),以承认游戏已经完成。
这是我的密码:
def play_game():
# Pick word randomly from list
random_num = random.randint(0, (len(words_list) - 1))
current_word = list(words_list[random_num].upper())
print(current_word)
print('The word has', str(len(current_word)), 'characters')
current_letter = input('Pick a letter: ').upper() #User input
picked_letters = []
correct_ones = []
for i in range(len(current_word)):
correct_ones.append('_ ')
lifes = 3
while lifes != 0:
# Check if all characters have been already guessed
if current_word == correct_ones:
print('You won!')
break
# Check if character has already been chosen
elif current_letter in picked_letters:
print('You already chose this letter!')
current_letter = input('Pick another letter: ').upper()
continue
# Check if character is in word
if current_letter in current_word:
index_list = []
for i in range(len(current_word)): #Get indexes of character in word
if current_word[i] == current_letter:
index_list.append(i)
picked_letters.append(current_letter) #Append to keep track of chosen characters
for i in index_list:
correct_ones[i] = current_letter.upper() #Append to correct position
print('Correct!')
for i in correct_ones:
print(i + ' ', end='')
current_letter = input('Pick another letter: ').upper()
# Incorrect character
else:
picked_letters.append(current_letter)
lifes -= 1
print('Incorrect')
print('You have', str(lifes), 'lifes left')
current_letter = input('Pick another letter: ').upper()
continue
play_game()如果您在我的代码中看到任何不好的实践,请告诉我!
提前感谢!
发布于 2020-04-26 11:36:39
您在循环结束时向用户请求输入。因此,当您输入最后一个正确的字符时,再次请求用户输入:
print('Correct!')
for i in correct_ones:
print(i + ' ', end='')
current_letter = input('Pick another letter: ').upper()要解决这个问题,您可以将循环开始时所做的检查移到那里。因为在游戏开始时,没有输入,所以单词永远不应该被正确地猜测(除非真正的单词是空的,但不应该这样!)因为只有猜测一个正确的字符才能让你获胜,所以在那里检查它是有意义的。希望这有帮助,玩得开心点:)
发布于 2020-04-26 12:00:07
我对您的代码做了一些修改。现在,它如预期的那样工作。
def play_game():
# Pick word randomly from list
random_num = random.randint(0, (len(words_list) - 1))
current_word = list(words_list[random_num].upper())
print(current_word)
print('The word has', str(len(current_word)), 'characters')
picked_letters = []
correct_ones = []
for i in range(len(current_word)):
correct_ones.append('_ ')
lifes = 3
while lifes != 0:
# Check if all characters have been already guessed
if current_word == correct_ones:
print('You won!')
break
current_letter = input('Pick a letter: ').upper()
# Check if character has already been chosen
if current_letter in picked_letters:
print('You already chose this letter!')
continue
# Check if character is in word
if current_letter in current_word:
index_list = []
for i in range(len(current_word)): # Get indexes of character in word
if current_word[i] == current_letter:
index_list.append(i)
picked_letters.append(current_letter) # Append to keep track of chosen characters
for i in index_list:
correct_ones[i] = current_letter.upper() # Append to correct position
print('Correct!')
for i in correct_ones:
print(i + ' ', end='')
# Incorrect character
else:
picked_letters.append(current_letter)
lifes -= 1
print('Incorrect')
print('You have', str(lifes), 'lifes left')
continue
play_game()发布于 2021-01-08 18:39:24
下面是一个快速循环,它将添加您的猜测并将您的单词添加到"-“中。
while tries > 0:
hiddenphrase = ""
for char in word:
if char in guessed:
hiddenphrase = hiddenphrase + char
elif char in letters:
hiddenphrase = hiddenphrase + "-"
else:
hiddenphrase = hiddenphrase + charhttps://stackoverflow.com/questions/61439927
复制相似问题