我正在制作类似于python上的文字扭曲的游戏,我想知道如何防止用户能够输入两次相同的单词。这是我到目前为止所拥有的......
import random
correct = 0
incorrect = 0
usedwords = []
print 'Welcome to text twist, you have 14 guesses to get 7 words made up of 4, 5 or 6 letters. Good Luck!'
for i in range(14):
print "Your letters are 'E' 'P' 'L' 'B' 'E' 'B', what is your guess?"
answer = raw_input()
if answer in usedwords:
print "Sorry, you've already used this word"
if answer == 'belle' or answer == 'bleep' or answer == 'pebble' or answer == 'beep' or answer == 'bell' or answer == 'peel' or answer == 'peep':
if answer in usedwords:
print 'Nice that was one of the words!'
usedwords.append(answer)
correct = correct + 1
if answer != 'belle' and answer != 'bleep' and answer != 'pebble' and answer != 'beep' and answer != 'bell' and answer != 'peel' and answer != 'peep':
print 'Sorry, that was not one of the words.'
incorrect = incorrect + 1
print 'Your final score was', correct, 'correct and', incorrect, 'wrong.'
答案 0 :(得分:1)
import random
correct = 0
incorrect = 0
usedwords = []
print 'Welcome to text twist, you have 14 guesses to get 7 words made up of 4, 5 or 6 letters. Good Luck!'
for i in range(14):
print "Your letters are 'E' 'P' 'L' 'B' 'E' 'B', what is your guess?"
answer = raw_input()
if answer in usedwords:
print "Sorry, you've already used this word"
else: #Newly added
usedwords.append(answer) #We have to add the input words to the list if they are new
if answer == 'belle' or answer == 'bleep' or answer == 'pebble' or answer == 'beep' or answer == 'bell' or answer == 'peel' or answer == 'peep':
if answer in usedwords:
print 'Nice that was one of the words!'
usedwords.append(answer)
correct = correct + 1
if answer != 'belle' and answer != 'bleep' and answer != 'pebble' and answer != 'beep' and answer != 'bell' and answer != 'peel' and answer != 'peep':
print 'Sorry, that was not one of the words.'
incorrect = incorrect + 1
print 'Your final score was', correct, 'correct and', incorrect, 'wrong.'
答案 1 :(得分:1)
此代码可以修改如下:
import random
correct = 0
incorrect = 0
usedwords = []
print 'Welcome to text twist, you have 14 guesses to get 7 words made up of 4, 5 or 6 letters. Good Luck!'
for i in range(14):
print "Your letters are 'E' 'P' 'L' 'B' 'E' 'B', what is your guess?"
answer = raw_input()
if answer in usedwords:
print "Sorry, you've already used this word"
incorrect = incorrect + 1
continue
elif answer == 'belle' or answer == 'bleep' or answer == 'pebble' or answer == 'beep' or answer == 'bell' or answer == 'peel' or answer == 'peep':
print 'Nice that was one of the words!'
usedwords.append(answer)
correct = correct + 1
else:
print 'Sorry, that was not one of the words.'
incorrect = incorrect + 1
print 'Your final score was', correct, 'correct and', incorrect, 'wrong.'
<强>的变化:强>
不正确=错误+ 1,在重复同一个字时增加不正确的尝试。
使用if..elif..else而不是多个if语句以更清晰,并忽略“!=”验证。
删除了“使用过的词中的iList itemf answer:”在第二个if语句中进行验证,因为之前已经验证过。
如果单词不在用词中,或者单词不在预期单词列表中,那么这个单词显然不正确,因此在else语句中,错误计数会随着消息而增加。
<强>建议:强> 您可以声明一个列表,而不是在elif语句中使用多个OR, expectedwords = ['belle','bleep','pebble','beep','bell','peel','peep'] 并使用, 预期词中的elif答案: ....