我编写了一个简短的猜谜游戏。但是,我不知道如何防止不正确的输入(是/否),阻止用户继续前进。这是一个工作代码。虽然真的尝试,但它只会更多地混淆输入。最远的是其他,通知玩家,但q计数向前移动。
# -*- coding: cp1250 -*-
import sys
def genVprasanja ():
yes = set(['yes','y', ''])
no = set(['no','n'])
testQ = ['hello1', 'hello33112', 'hello332', 'hello2', 'hello4','hellomore', 'ANSWER', 'hello1', 'hello33112', 'hello332', 'hello2', 'hello4','hellomore', 'ANSWER2', 'hello1', 'hello33112', 'hello332', 'hello2', 'hello4','hellomore', 'ANSWER3']
points = 5
total = 0
for x in range(0,3):
for y in xrange(len(testQ)):
reply = str(raw_input('\n'+str(abs(y-5))+ ' - ' + testQ[y]+' (y/n) --> ')).lower().strip()
if reply in yes:
print '\ncorect!\n\nAnswer is :',testQ[5], '\n\nPoints: ',points, '\n'
total = total + points
print 'Total: ', total, '\n'
break
elif reply in no:
points = points - 1
if points != 0:
print '\nwrong!', '\n\nNext question for: ',points
else:
print '\nThe end!\n\n' 'Every anwser is wrong!\n\nYou got 0 points.\n\Correct answer is:', testQ[5],'\n\n'
total = total + points
print 'SKUPNE TOČKE: ', total
break
else:
sys.stdout.write("\nPlease press 'RETURN' or 'N'\n")
points = 5
genVprasanja()
编辑:
每位玩家都可以回答三组5个问题。他们接受问题直到他们说是。如果他们说没有5次循环结束(3次) - 我使用var points
来计算。
但是如果他们输入和不正确的单词(不是没有而不是是),输入问题会重复询问他们(直到他们输入有效答案)。之后,他们得到了他们未能有效回答的相同问题。
答案 0 :(得分:1)
while True:
将起作用,一旦条件满足,您需要break
离开循环。
while True:
reply = str(raw_input('\n' + str(abs(y - 5)) + ' - ' + testQ[y] + ' (y/n) --> ')).lower().strip()
if reply in yes or reply in no:
break
根据更新的范围,试试这个,似乎break
可能会给您带来问题:
reply = False
while reply not in yes and reply not in no:
reply = str(raw_input('\n' + str(abs(y - 5)) + ' - ' + testQ[y] + ' (y/n) --> ')).lower().strip()
答案 1 :(得分:0)
你需要在这里的'while',一旦你到达'for'区块的末尾,它将转到范围内的下一个值。
for y in xrange(len(testQ)):
bGoodInput = False
while not bGoodInput:
reply = str(raw_input('\n'+str(abs(y-5))+ ' - ' + testQ[y]+' (y/n) --> ')).lower().strip()
if reply in yes:
...
bGoodInput = True
elif reply in no:
...
bGoodInput = True
else:
...