首页 > 解决方案 > 无法解释的语法/EOF 错误

问题描述

我的打印命令中不断出现语法错误(这就是括号位于底部的原因),如果我尝试运行代码,我还会收到文件结束错误(解析时文件意外结束)。

我在打印语句上放了一个括号,我尝试重新输入代码但没有成功。

print ("input a number")
a = (str(input(''))

if 9 in (a)
    (b = a.count('9')
if 8 in (a)
    (c = a.count('8')
if 7 in (a)
    (d = a.count('7')
if 6 in (a)
    (e = a.count('6')
if 5 in (a)
    (f = a.count('5')
if 4 in (a)
    (g = a.count('4')
if 3 in (a)
    (h = a.count('3')
if 2 in (a)
    (i = a.count('2')
if 1 in (a)
    (j = a.count('1')
if 0 in (a)
    (k = a.count('0')

(print("the highest number you can make is", 9*b, 8*c, 7*d, 6*e, 5*f, 4*g, 3*h, 2*i, 1*j, 0*k)
File "/home/ubuntu/workspace/SuPeRsIzE.py", line 26
                                                                                                  ^
SyntaxError: unexpected EOF while parsing

请注意,代码只有 25 行长——我什至还没有打开到 26 行

---------------------------------------------------------------------------
 File "/home/ubuntu/workspace/SuPeRsIzE.py", line 25
    print("the highest number you can make is", 9*b, 8*c, 7*d, 6*e, 5*f, 4*g, 3*h, 2*i, 1*j, 0*k)
        ^
SyntaxError: invalid syntax

如果我从打印语句中删除括号,这就是我得到的。

标签: pythonpython-3.x

解决方案


所以,语法错误实际上是因为你没有结束你的if语句,而且你在块:的每一行都有一堆开括号。if您可能想查看基本 Python 语法的教程。

语法错误不会立即发生的原因是 Python 的工作方式。如果我们删除换行符:

if 9 in (a)(b = a.count('9') if 8 in (a)(c = a.count('8') ...

它的作用是尝试测试是否9在正确的表达式中,这是一个函数调用。它尝试调用a关键字参数b等于的函数a.count('9') if <expr> else <expr>,这是 Python 的三元表达式语法。在最后,它说“意外的 EOF”,因为它期望更多的右括号,因为你打开了很多一开始甚至不应该存在的括号。如果你把它们都放进去,它会说“无效的语法”,因为它需要else语句来完成三元表达式。


推荐阅读