Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
其他及;elif语句在Python中不起作用_Python - Fatal编程技术网

其他及;elif语句在Python中不起作用

其他及;elif语句在Python中不起作用,python,Python,我是Python的新手,目前正在学习控制流命令,如if,else,等等 if语句工作正常,但当我编写else或elif命令时,解释器会给我一个语法错误。我使用的是Python3.2.1,问题出现在它的本机解释器和空闲解释器中 我以下是书中给出的内容。如您所见,elif和else给出的语法无效 >编号=23 >>猜测=输入('输入一个数字:') >>如果guess==数字: >>打印('祝贺你!你猜对了') >>elif guess>其他: **(这也给了我“无效语法”)** 为什么会这样?我在

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

if
语句工作正常,但当我编写
else
elif
命令时,解释器会给我一个语法错误。我使用的是Python3.2.1,问题出现在它的本机解释器和空闲解释器中

我以下是书中给出的内容。如您所见,
elif
else
给出的语法无效

>编号=23
>>猜测=输入('输入一个数字:')
>>如果guess==数字:
>>打印('祝贺你!你猜对了')
>>elif guess<数字:
**(它给了我“无效语法”)**
>>其他:
**(这也给了我“无效语法”)**
为什么会这样?我在IDLE和交互式python中都遇到了问题。我希望语法是正确的

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


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

elif
else
必须紧跟在
if
块的末尾,否则Python将假定该块在没有它们的情况下关闭

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

看起来您在
if
语句正文后输入了一个空行。这是一个提示,提示交互式编译器您已经完全使用了块,因此它不需要任何
elif
/
else
块。请尝试完全按照以下方式输入代码,并在每行之后只按enter键一次:

if guess == number:
    print('Congratulations! You guessed it.')
elif guess < number:
    pass # Your code here
else:
    pass # Your code here
如果猜测==数字:
打印('祝贺你!你猜对了')
elif guess<数字:
把你的密码传过来
其他:
把你的密码传过来

<>代码> 问题是您在<代码> < < />代码>或<代码> ELIF < />之前正在键入的空白行。注意你得到的提示。如果它是
>
,那么Python期望新语句的开始。如果它是
,那么它希望您继续前面的语句。

在IDLE和交互式python中,您输入了两个连续的CRLF,这将使您退出If语句。
这是空闲或交互式python的问题。使用任何编辑器都可以,只要确保缩进正确。

此外,缩进是错误的。代码不起作用。
 if guess == number:
     print ("Good")
 elif guess == 2:
     print ("Bad")
 else:
     print ("Also bad")
我知道您正在使用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')
number=str(23)
猜测=输入('输入一个数字:')
如果guess==数字:
打印('祝贺你!你猜对了')
elif guess<数字:
打印('错误号码')
elif guess<数字:
打印(“错误号码”)

唯一不同的是,我会告诉python,数字是一个字符串,代码才能工作。如果不是,我会认为是一个整数。当有人运行代码时,他们输入的是一个字符串而不是整数。有很多方法可以更改此代码,但这是我想提供的简单解决方案。还有一种方法我想不出hout将23转换成字符串。或者您可以使用“23”中的引号,也可以使用int()函数。这会将输入的任何内容转换为整数。

请记住,默认情况下,输入的返回值将是字符串而不是整数。您不能将字符串与布尔值进行比较,例如,=>,Python可能会生成相同的“无效语法”错误,即使“elif”块的ident与“if”bl不匹配ock ident(第一行为制表符,第二行为空格,反之亦然)。

缩进在Python中很重要。if-else语句应该在三箭头(>>>)内,在Mac Python IDLE版本3.7.4中,当您进入下一行时,elif语句没有正确的缩进,您必须向左移动以避免语法错误


语法在我看来是正确的。你是在交互式Python shell中输入的,还是保存在文件中?你能粘贴未修改的脚本或交互式会话转录本吗?elif/else是空的吗?如果是sou,请添加
pass
。你能粘贴REPL会话的实际完整输出吗?人们会更容易看到你的脚本问题:如果您不将实际输出替换为“(它给出的是‘无效语法’)”请注意,guess将是
str()的一个实例,number是
int()的一个实例
type。根据您的Python版本,将这两个运算符与除等式或不等式运算符以外的任何运算符进行比较时,可能会或可能不会被解释为类型不安全的操作。谢谢!它解决了我的问题。:)我的书中没有给出您将要讲述的内容。对于此类测试,在文本文件中编写所有内容更容易,使用“pyth”运行它在mytest.py'@jayantr7上:没问题。请注意,如果您将其输入到一个文件中并通过python运行它(正如Simon所建议的),则不会出现额外换行的问题;这是交互式解释器特有的问题。谢谢,我已经在elif之前删除了from语句,现在这已经起作用了。
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')