我正在编写一个代码,要求你玩一个猜谜游戏。它会问你是否要玩,然后继续。
如果输入的值不在列表中但是它不起作用,则应该再次询问一个数字。我无法得到它。谢谢你!
import random
import math
import time
repeat=True
numbers = ["1","2","3","4","5"]
gamestart=False
gamecontinue=True
def guess():
chosennumber=random.choice(numbers)
guessnumber=raw_input(">Guess the number I chose between 0 and 6:")
if guessnumber==chosennumber and guessnumber in numbers:
print ">Congratulations, I chose %d too!" % (int(chosennumber))
print
elif guessnumber!=chosennumber:
print "That is not right."
print "I chose %d." % (int(chosennumber))
print
elif not guessnumber in numbers:
while not guessnumber in numbers:
guessnumber=raw_input(">Please enter a number between 0 and 6:")
if raw_input(">Do you want to play guessing game? Y or N:") == "Y":
gamestart=True
else:
print "Okay, I will play myself."
time.sleep(2)
print "Bye :("
while gamestart==True and gamecontinue==True:
guess()
if raw_input (">Do you want to play again? Y or N:") == "N":
gamecontinue=False
print "Okay, I will play myself."
time.sleep(2)
print "Bye :("
答案 0 :(得分:0)
问题在于,如果你输入两个elif
语句,第一个语句将首先进行。
elif guessnumber!=chosennumber:
print "That is not right."
print "I chose %d." % (int(chosennumber))
print
首先会询问此情况。但是如果再看一下输入(guessnumber)是否在列表中,它将继续。因此,如果我们希望它成为我们输入列表中但不与所选数字匹配的数字的条件,我们将为elif语句添加另一个条件。
代码将是这样的
elif guessnumber!=chosennumber and guessnumber in numbers:
细微的细节,但我认为要记住这一点。
答案 1 :(得分:0)
if number not in numbers
这样就可以了 它检查所选号码是否在列表中是否为真
答案 2 :(得分:0)
所以你弄清楚问题是什么,好!但我还有一个提示给你,一个更好的方法来实现这个是检查输入是否正确,如果它是正确的你继续前进,如果不是,你再次要求它:
while True:
guessnumber=raw_input(">Guess the number I chose between 0 and 6:")
if guessnumber in numbers:
print "good!"
break
else:
print "bad!"
现在您确定输入正确,因此您只需检查:
if guessnumber==chosennumber:
print ">Congratulations, I chose %d too!" % (int(chosennumber))
else:
print "That is not right."
print "I chose %d." % (int(chosennumber))