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

2024-04-27 10:42:08 发布

您现在位置: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 :("

Tags: andimporttrueinputplayrawiftime
3条回答

问题是,如果您放置两个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:

有点细节,但我想应该记住。你知道吗

if number not in numbers

那就行了 它检查所选号码是否在列表中

所以你发现了问题所在,很好!但我还有一个建议给你,一个更好的方法来实现这一点是检查输入是否正确,如果它是正确的,你继续,如果它不是,你要求再次在那里:

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

相关问题 更多 >