Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.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
Python 为什么即使else与if处于同一缩进,它也会出现语法错误?_Python - Fatal编程技术网

Python 为什么即使else与if处于同一缩进,它也会出现语法错误?

Python 为什么即使else与if处于同一缩进,它也会出现语法错误?,python,Python,下面的程序计算字母为“a”的输入字符串的数量,并在输入字符串为“####”时结束程序。以下是预期的示例运行: while True: string = input("enter a string (enter #### to stop): ") count = 0 for letter in string: if letter == 'a': break count +=1 els

下面的程序计算字母为“a”的输入字符串的数量,并在输入字符串为“####”时结束程序。以下是预期的示例运行:

while True:
    string = input("enter a string (enter #### to stop): ")
    count = 0
    for letter in string:
        if letter == 'a':
            break
        count +=1
        else:
            pass

output:
File "<ipython-input-53-4d8a4c435ab9>", line 8
    else:
       ^
Syntax Error: invalid syntax
为True时:
字符串=输入(“输入字符串(输入#####停止):”)
计数=0
对于字符串中的字母:
如果字母==“a”:
打破
计数+=1
其他:
通过
输出:
文件“”,第8行
其他:
^
语法错误:无效语法

问题是您在if之后添加了
count+=1
,而不是else

更改此项:

    string = input("enter a string (enter #### to stop): ")
    count = 0
    for letter in string:
        if letter == 'a':
            break
        count +=1
        else:
            pass
致:


它起作用了

问题是您在if之后添加了
count+=1
,而不是else

更改此项:

    string = input("enter a string (enter #### to stop): ")
    count = 0
    for letter in string:
        if letter == 'a':
            break
        count +=1
        else:
            pass
致:

它起作用了

让我们来破解你的密码:


如果字母==“a”:
打破
计数+=1
其他:
通过
当找到字母“a”时,条件方法将被转义,并且不会发生任何事情

您在if语句的缩进中添加了
count+=1
,因此解释器认为if语句已经结束,您正在那里编写其他代码。 解释器的代码如下所示:

if letter=='a':
   break
if letter=='a':
   count += 1 
   break
else:
   pass
这是一段用于比较字母的代码

count += 1
从if语句转义后,代码流转到这里,计数增加1

else:
   pass
为什么我得到一个else语句而没有if语句

所以你应该这样做:

if letter=='a':
   break
if letter=='a':
   count += 1 
   break
else:
   pass
如果要计算字符串中字母“a”的数量,则计数不应有缩进。

让我们打断您的代码:


如果字母==“a”:
打破
计数+=1
其他:
通过
当找到字母“a”时,条件方法将被转义,并且不会发生任何事情

您在if语句的缩进中添加了
count+=1
,因此解释器认为if语句已经结束,您正在那里编写其他代码。 解释器的代码如下所示:

if letter=='a':
   break
if letter=='a':
   count += 1 
   break
else:
   pass
这是一段用于比较字母的代码

count += 1
从if语句转义后,代码流转到这里,计数增加1

else:
   pass
为什么我得到一个else语句而没有if语句

所以你应该这样做:

if letter=='a':
   break
if letter=='a':
   count += 1 
   break
else:
   pass

如果要计算字符串中字母“a”的数量,则计数不应有缩进。

您的
else
块不在
if
块之后。它们之间有
count+=1
if
循环在
count+=1
行被认为是中断的-将其移动到
if
语句之前,它就会工作。当输入为
a
时,为什么我们要
break
?更正
计数
缩进并移动
中断
,并且
否则:通过
完全没有用。把它拿开,这看起来很熟悉。。。这段代码是来自指南还是什么?我发誓我最近看到有人发布了完全相同的问题,比如相同的代码和所有东西。你的
else
块没有跟随
if
块。它们之间有
count+=1
if
循环在
count+=1
行被认为是中断的-将其移动到
if
语句之前,它就会工作。当输入为
a
时,为什么我们要
break
?更正
计数
缩进并移动
中断
,并且
否则:通过
完全没有用。把它拿开,这看起来很熟悉。。。这段代码是来自指南还是什么?我发誓,我最近看到有人发布了完全相同的问题,像相同的代码和所有东西。而且break语句将打破循环,所以你永远不会计数超过1…而且break语句将打破循环,所以你永远不会计数超过1。。。