蟒蛇;如何测试列表中是否有内容?

时间:2018-04-29 15:27:49

标签: python

我正在编写一个代码,要求你玩一个猜谜游戏。它会问你是否要玩,然后继续。

如果输入的值不在列表中但是它不起作用,则应该再次询问一个数字。我无法得到它。谢谢你!

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 :("

3 个答案:

答案 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))