【问题标题】:Getting a syntax error on a while loop在 while 循环中出现语法错误
【发布时间】:2012-10-25 15:48:23
【问题描述】:

我在 while 循环中不断收到语法错误,我不明白为什么。

def main():
    n=1
    i=1
    flag=True
    num1=eval(input("Enter number")
    while i<9:
        n=n+1
        num2=eval(input("Enter number", n))
        r=r+1
        if num2<num1:
            flag=False
        num1=num2
    if flag==True:
        print("yes")
    else:
        print("no")
main()

【问题讨论】:

  • 您的 i 变量永远不会增加(无限循环)。也许链接到无用的行r=r+1
  • 粘贴您得到的确切错误 - 上面的代码中没有任何内容,但您可能混合了制表符和空格。你用的是什么编辑器?
  • 顺便说一句,flag==True 是一个重言式。只需flag 就足够了。
  • 您是否有理由在回答问题后从问题中删除所有代码?如果没有其中的代码,它们绝对没有意义。另请注意this was brought up on Meta.

标签: python loops syntax while-loop


【解决方案1】:

您的语法错误是因为 while 循环上方的表达式缺少闭合括号:

 num1=eval(input("Enter number")

我还建议将您的代码提交给Code Review SE,以获取有关您代码的其他问题的建设性反馈。

【讨论】:

  • 我更喜欢 int()float() 而不是 eval
【解决方案2】:
def main():
n=1
i=1
flag=True
num1=eval(input("Enter number"))
while i<9:
    n=n+1
    num2=eval(input("Enter number", n))
    i+=1
    if num2<num1:
        flag=False
    num1=num2
if flag==True:
    print("yes")
else:
    print("no")
main()

您在 num1=eval(input("Enter number")) 处打开了一个参数

我还将 r = r + 1 更改为 r+=1,它们做同样的事情,但它读起来更好一些。

您还可以通过将其更改为来确保该数字是整数:

num1=int(input("输入数字:"))

另外,我认为 n+=1 需要 i+=1 才能结束无限循环。

【讨论】:

    【解决方案3】:

    采取你的无限循环的车。最终的代码可能是(包括其他同行的好答案):

    def main():
        n=1
        flag=True
        num1=eval(input("Enter number"))
        while n<9:
            n+=1
            num2=eval(input("Enter number", n))
            if num2<num1:
                flag=False
            num1=num2
    
        if flag:
            print("yes")
        else:
            print("no")
    main()
    

    在变量 n 上简单循环:i 和 r 在这里没用。

    【讨论】:

      猜你喜欢
      • 2014-10-14
      • 2016-07-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多