别的& elif语句不适用于Python

时间:2011-08-11 11:59:27

标签: python

我是Python的新手,目前正在学习ifelse等控制流程命令。

if语句工作正常,但是当我编写elseelif命令时,解释器会给我一个语法错误。我正在使用Python 3.2.1,这个问题出现在它的本机解释器和IDLE中。

我正在按照 'A Byte Of Python' 一书中的说法进行操作。如您所见,elifelse正在提供无效语法

>> number=23
>> guess = input('Enter a number : ')
>> if guess == number:
>>    print('Congratulations! You guessed it.')
>> elif guess < number:
   **( It is giving me 'Invalid Syntax')**
>> else:
   **( It is also giving me 'Invalid syntax')**

为什么会这样?我在IDLE和交互式python中都遇到了问题。我希望语法是正确的。

enter image description here

9 个答案:

答案 0 :(得分:22)

看起来您在if语句的正文后面输入一个空行。这是完全使用块完成的交互式编译器的提示,因此不期望任何elif / else块。尝试输入与此完全相同的代码,只需在每行后输入一次

if guess == number:
    print('Congratulations! You guessed it.')
elif guess < number:
    pass # Your code here
else:
    pass # Your code here

答案 1 :(得分:3)

问题是您在elseelif之前输入的空白​​行。注意你给出的提示。如果它是>>>,那么Python期望新语句的开始。如果是...,那么它希望您继续之前的陈述。

答案 2 :(得分:2)

elifelse必须立即跟随if块的末尾,否则Python会认为该块已在没有它们的情况下关闭。

if 1:
    pass
             <--- this line must be indented at the same level as the `pass`
else:
    pass

在代码中,解释程序在缩进时完成if阻止,因此elifelse与之无关。因此,它们被理解为独立的陈述,这是没有意义的。


通常,请尝试按照style guidelines进行操作,其中包括删除过多的空格。

答案 3 :(得分:2)

在IDLE和交互式python中,你输入了两个连续的CRLF,它将你带出if语句。 这是IDLE或交互式python的问题。当您使用任何类型的编辑器时都可以,只需确保缩进是正确的。

答案 4 :(得分:1)

 if guess == number:
     print ("Good")
 elif guess == 2:
     print ("Bad")
 else:
     print ("Also bad")

确保缩进正确。语法还可以。

答案 5 :(得分:1)

请记住,默认情况下,输入的返回值将是字符串而不是整数。您无法将字符串与&lt;,&gt;,=&gt;,&lt; =等布尔值进行比较(除非您要比较长度)。因此,您的代码应如下所示:

number = 23
guess = int(input('Enter a number: '))  # The var guess will be an integer

if guess == number:
    print('Congratulations! You guessed it.')

elif guess != number:
    print('Wrong Number')

答案 6 :(得分:0)

除此之外你的缩进是错误的。代码不会工作。 我知道你正在使用python 3.的东西。 我使用的是python 2.7.3 实际上对你要完成的工作有效的代码就是这个。

number = str(23)
guess =  input('Enter a number: ')
if guess == number:
   print('Congratulations! You guessed it.')
elif guess < number:
     print('Wrong Number')
elif guess < number:
     print("Wrong Number')

唯一的区别是我告诉python这个数字是代码工作的字符串。如果不是认为是整数。当有人运行代码时,他们输入的字符串不是整数。有很多方法可以改变这些代码,但这是我想要提供的简单解决方案,有一种我无法想到的方法,而不将23变为字符串。或者您可以使用“23”引用或者您可以在输入中使用int()函数。这将转换他们输入的任何内容并整数数字。

答案 7 :(得分:0)

Python可以生成相同的无效语法&#39;即使是“elif”的身份也是错误的。阻止不匹配&#39;如果&#39; block ident(第一个标签,第二个空格,反之亦然)。

答案 8 :(得分:0)

缩进对于在语法上变得正确,并且if else语句应在>>>中很重要,在Mac python IDLE 3.7.4版中,当您进入下一行时,elif语句没有正确的缩进向左移动以避免语法错误。

enter image description here