为什么我的代码无限运行?

时间:2017-11-05 21:26:28

标签: python while-loop python-3.5 infinite-loop

这是一个奇怪的计算器,无限运行,没有任何错误。有谁知道如何解决这一问题?我可以用多次输入来调用方法吗?

def calc(time):
    i = 1
    while i <= time:
       num = int(input("Enter your number"))
       i + 1
       x=0
       y=0

       if (int(num) % 2 == 0):
          even = True
          print("even")


       elif (int(num) % 2 != 0):
          odd = True
          print("odd")



       if (odd == True):
         x += 1

       elif (even == True):
         y += 1


times = int(input("How many numbers will you be putting in this calc?"))

calc(times)

4 个答案:

答案 0 :(得分:2)

只有一些事情你错了,其余的都很好,解释在评论中:

[x,y,偶数,奇数]中的所有变量都是无用的,所以这就是我删除它们的原因。

def calc(time):
    i = 1
    while i <= time:
      num = int(input("Enter your number"))
      i+=1 # important thing here, to update the value the symbol is +=, not just +

      if (int(num) % 2 == 0):
          print("even")

      else: # there is no need of elif, if the number is not even, by definition, it is odd
          print("odd")

times = int(input("How many numbers will you be putting in this calc?"))

calc(times)

你可以在这里试试,看看如何正确地完成工作:) - &gt; https://repl.it/Nm70/0

答案 1 :(得分:1)

第5行应为i = i + 1

答案 2 :(得分:0)

我假设您遇到stackoverflow的格式问题,而不是实际代码的格式问题。你的while循环之后的行需要缩进,我假设你正在做。你遇到的问题是你没有增加我。输入后的第一行你有i + 1.这没有任何作用,因为你没有把它分配给任何东西。您的代码中有x + = 1和y + = 1,它会递增和分配。所以基本上将你的i + 1行改为i + = 1或i = i + 1

答案 3 :(得分:-2)

while循环中所需的所有内容都需要缩进一个“tab”,如下所示:

while i <= time:
    #Code goes here