我正在尝试制作刽子手,我知道还有很多工作要做,但我无法弄清楚为什么底部的例外不起作用。这是我的代码。
import random
hideword = 0
player1 = input('''What is player 1's you name? ''')
player2 = input('''What is player 2's you name? ''')
letterlist = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' ,'l' ,'m' ,'n' ,'o' ,'p','q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
print(player1 + 'is first!')
word = input(player2 + ', please turn away, ' + player1 + ' please write a LOWER case word for ' + player2 + ' to guess. ' )
wordsplit = list(word)
while hideword < 50:
print()
hideword += 1
while True:
print(player2 + ', ' + player1 + ''''s word fits into these blanks''')
print('_ ' * len(wordsplit))
letter = input(player2 + ' please type a LOWER case letter to guess. ' )
wordsplit.index(letter)
letterlist.remove(letter)
try:
if letter in wordsplit:
print('CORRET!')
print('_ ' * wordsplit.index(letter) + letter + ' _ ' * (len(wordsplit) - wordsplit.index(letter) - 1))
break
except ValueError:
print('Incorrect! Try again')
答案 0 :(得分:1)
您需要else
,而不是try..except
。后者用于导致程序崩溃的事情。在程序中的那个点上检查成员身份不会导致这样的错误。
try:
if letter in wordsplit:
print('CORRET!')
print('_ ' * wordsplit.index(letter) + letter + ' _ ' * (len(wordsplit) - wordsplit.index(letter) - 1))
break
except ValueError:
print('Incorrect! Try again')
更改为:
if letter in wordsplit:
print('CORRET!')
print('_ ' * wordsplit.index(letter) + letter + ' _ ' * (len(wordsplit) - wordsplit.index(letter) - 1))
break
else:
print('Incorrect! Try again')
答案 1 :(得分:0)
当您正在检查if letter in wordsplit
时,您无法使用ValueError
提出wordsplit.index(letter)
。
因此,无需提出错误。
如果letter not in wordsplit
,请按照else
进行操作,如前所述。
答案 2 :(得分:0)
好吧,在你的try
区块中没有任何东西可以抛出一个异常,处理你的情况的最好方法可能就是按照建议使用if..else
。
但是,这些行上已经存在异常:
wordsplit.index(letter)
letterlist.remove(letter)
这是您使用try..except
的方法(仅作为示例,因为if..else
也有效):
letter = input(player2 + ' please type a LOWER case letter to guess. ' )
try:
position = wordsplit.index(letter)
letterlist.remove(letter)
print('CORRECT!')
print('_ ' * position + letter + ' _ ' * (len(wordsplit) - position - 1))
break
except ValueError:
print('Incorrect! Try again')