elif语句不适用于Python

else & elif statements not working in Python

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

if语句工作得很好,但是当我编写elseelif命令时,解释器给了我一个语法错误。我使用的是python 3.2.1,问题出现在它的本机解释器和idle中。

我按照"python的一个字节"这本书中的描述来做。如您所见,elifelse给出了无效的语法。

1
2
3
4
5
6
7
8
>> 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')**

为什么会这样?我在空闲和交互式Python中都遇到了这个问题。我希望语法正确。

enter image description here


看起来您在if语句的主体后面输入了一个空行。这是交互式编译器的提示,提示您完全使用了该块,因此不希望使用任何elif/else块。尝试输入与此完全相同的代码,并且在每行后只按Enter键一次:

1
2
3
4
5
6
if guess == number:
    print('Congratulations! You guessed it.')
elif guess < number:
    pass # Your code here
else:
    pass # Your code here


问题是,在EDCOX1 1或EDCOX1 0的条件下,您正在键入空白行。注意你得到的提示。如果它是>>>,那么python就期望新语句的开始。如果是...,那么它希望您继续前面的声明。


在idle和interactive python中,您输入了两个连续的CRLF,这使您脱离了if语句。这是闲置或交互式Python的问题。使用任何类型的编辑器都可以,只要确保缩进正确即可。


elifelse必须紧跟if块的末尾,否则python将假定块在没有它们的情况下关闭。

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

在您的代码中,解释器在缩进时完成if块,因此elifelse与此无关。因此,它们被理解为独立的语句,这是没有意义的。

通常,尝试遵循样式指导原则,其中包括删除过多的空白。


请记住,默认情况下,输入的返回值将是字符串而不是整数。不能将字符串与布尔值(如<,>,=>,<=)进行比较(除非正在比较长度)。因此,您的代码应该如下所示:

1
2
3
4
5
6
7
8
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')

1
2
3
4
5
6
 if guess == number:
     print ("Good")
 elif guess == 2:
     print ("Bad")
 else:
     print ("Also bad")

确保你的身份正确。语法正常。


即使"elif"块的标识与"if"块标识不匹配(第一个为制表符,第二个为空格,反之亦然),python也可以生成相同的"无效语法"错误。


除此之外,你的契约是错误的。代码不起作用。我知道你在使用python 3。某物。我使用的是python 2.7.3对于您试图完成的工作,实际有效的代码是这个。

1
2
3
4
5
6
7
8
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()函数。这将把他们输入的任何东西转换成一个整数。