我确实需要帮助来修复此代码。基本上,这是一个hang子手游戏,用户可以猜测字母或单词。(Python)帮助修复Hang子手游戏
如果用户输入一个字母,它将像普通的hang子手游戏一样工作。然而,最后的机会(猜测#6)必须是一个词。如果用户在猜测#6之前使用了字母猜测并得到了正确的结果,用户就不会猜测这个单词。
用户可以事先猜出这个单词,但如果它错了,他们将失去两次机会。所以如果他们一开始就猜错词,他们将有4次机会,但最后的机会仍然是猜测。
编辑:该程序现在只有5个字母猜测是对还是错,但最终的猜测仍然是一个单词猜测,我们仍然有可选的早期单词猜测。柜台现在似乎在工作,但我不确定如何区分这些单词。 (编辑:我意识到还有一个问题要附加单词。)
这是我当前的代码。 我改变了它的部分(计数器< 5)在用户猜测。 (计数器== 5)的部分与旧的代码相似。
import random
wordlist = 'artist breeze circle decent enroll filthy growth honest invest kernel letter narrow meteor policy pursue roster runway scheme ripple toddle wobbly zeroes'.upper().split()
random.shuffle(wordlist)
counter = 0
def draw_board():
#Display words here
for i in secret_word:
if i in correct:
print(i, end=' ')
else:
print('_', end=' ')
print("\n")
print("*** MISSES ***")
for i in incorrect:
print(i, end=' ')
print('\n*********************')
def user_guess():
#For user to input guess
global counter
secret_word = wordlist.pop()
while(counter < 5):
guess = input("Guess a letter or word\n: ").upper()
if(len(guess) > 1):
guess_list = list(guess)
if(guess_list == secret_list):
correct.append(guess_list)
else:
counter = counter + 1
elif guess in secret_word:
correct.append(guess)
else:
incorrect.append(guess)
return counter
if(counter == 5):
wordguess = input("Enter your word\n: ").upper()
if(guess == secret_word):
correct.append(wordguess)
else:
counter = counter + 1
print(counter)
return counter
def check_win():
#Check if user has won or not
global counter
if(counter > 5):
return 'loss'
for i in secret_word:
if i not in correct:
return 'no win'
return 'win'
#pop is used to retrieve a word from word list
secret_word = wordlist.pop()
secret_list = list(secret_word)
correct = []
incorrect = []
print("DEBUG: %s" % secret_word)
while True:
draw_board()
user_guess()
counter = counter + 1
win_condition = check_win()
if win_condition == 'loss':
print("You lose!")
break
elif win_condition == 'win':
print("You win!")
代码的具体问题是什么?它出错了哪里? –
@Peter当用户输入一个单词时,程序不会检测到,所以即使用户输入正确的单词,它也会继续游戏。尽管机会超过6,它也会持续不断,所以在柜台或逻辑上肯定存在缺陷。对不起,没有正确处理这个问题。我编辑了这个问题。 – Sar