【问题标题】:My while loop never reaches the conditional stament and keeps looping我的 while 循环永远不会到达条件语句并继续循环
【发布时间】:2017-06-14 22:19:57
【问题描述】:

任务是做一个以参数为答案的猜谜游戏。最后,如果这个人做对了,它会打印一个祝贺声明并返回它所尝试的次数,如果他们输入退出,它会显示答案并尝试 == -1。除此之外,它会一直循环,直到他们得到正确的答案。

def guessNumber(num):
    tries = 1
    while tries > 0:
        guess = input("What is your guess? ")
        if guess == num:
            print ("Correct! It took you" + str(tries)+ "tries. ")
            return tries
        elif guess == "quit":
            tries == -1
            print ("The correct answer was " + str(num) + ".")
            return tries
        else:
            tries += 1

当我运行它时,无论我放入什么,它都会不断地询问我的猜测。

【问题讨论】:

  • break,然后是return
  • 如果输入“quit”后一直询问,那么你应该分析你调用这个函数的部分。你是循环调用它吗?
  • 你确定你发布了实际的缩进吗?

标签: python while-loop conditional


【解决方案1】:

由于您将变量称为num,所以我猜它是一个整数,您正在检查整数和字符串之间的相等性,因此它永远不会为真。比较时尝试将 num 更改为 str(num),所以:

def guessNumber(num):
    tries = 1
    while tries > 0:
        guess = input("What is your guess? ")
        if guess == str(num):
            print ("Correct! It took you {0} tries. ".format(tries))
            return tries
        elif guess == "quit":
            tries = -1
            print ("The correct answer was {0}.".format(num))
            return tries
        else:
            tries += 1

【讨论】:

  • 这确实解决了问题,但现在我无法输入“退出”,因为它不是整数。
  • 我意识到我的错误,所以我在 18 分钟前更改了我的答案,很抱歉造成混乱。 @MalaikatuKargbo 上面的代码应该可以工作。在相同的原理下,它的工作原理相同。
【解决方案2】:

代码是否正确缩进? 您定义的函数的主体由缩进级别决定。

在您粘贴的示例中,由于 def 之后的行缩进较少,因此函数的主体为“空”。

Indenting code is important in python

此外,要为变量分配一个值,您必须使用单个“=”,因此:

tries == -1

应该是

tries = -1

如果您想将 -1 值分配给该变量。

【讨论】:

  • 绝对不是解决方案。空函数会导致异常。
猜你喜欢
  • 2016-10-07
  • 2014-03-11
  • 2014-05-30
  • 1970-01-01
  • 2011-01-20
  • 2021-03-23
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
相关资源
最近更新 更多