无法解释的语法/ EOF错误

时间:2019-06-11 16:12:22

标签: python python-3.x

我在打印命令中不断收到语法错误(这就是为什么括号位于底部的那个),并且如果我尝试运行代码,还会收到文件结尾错误(解析时文件结尾意外)。

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

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

这是我从打印语句中删除括号后得到的结果。

3 个答案:

答案 0 :(得分:1)

此代码非常令人困惑,但解决了语法错误:

  1. 您所有的if行都必须以:结尾
if 4 in (a) # missing : at the end

应该是

if 4 in a:
  1. 每个if正文都以(开头,但没有关闭
(b = a.count('9')

应该是

b = a.count('9')
  1. 您将打印从未分配的变量,除非每个if检查均独立为true。所以我建议至少删除所有的if检查并将其放平
b = a.count('9')
c = a.count('8')
d = a.count('7')
e = a.count('6')
f = a.count('5')
g = a.count('4')
h = a.count('3')
i = a.count('2')
j = a.count('1')
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)

但是我认为这不会产生正确的答案,尽管很难知道您的目标是什么。

  1. 这些不是错误,但是您不需要在输入和打印周围使用多余的()。 input()还支持显示字符串
a = input('input a number: ')
# ...
print('the highest number...')

更新以发表评论,以说明目标是重新安排。

最简单的方法是使用python sorted,然后join将结果返回到单个字符串

a = input('input a number: ')

highest = ''.join(sorted(a, reverse=True))
print('The highest number you can make is', highest)

但是,如果您希望保留所有变量的现有方法,则只需引用int并用str来替换sep=''中的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, sep='') 删除之间的空格

a = input('input a number: ')

result = ''
for i in range(10, -1, -1):
  count = a.count(str(i))
  result += count * str(i)

print("the highest number you can make is", result)

一种更必要但又不那么重复的方法是随您建立一个结果字符串

spring.output.ansi.enabled=always

答案 1 :(得分:1)

因此,语法错误实际上是因为您没有用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语句完成三元表达式。

答案 2 :(得分:0)

    b = a.count('9')
c = a.count('8')
d = a.count('7')
e = a.count('6')
f = a.count('5')
g = a.count('4')
h = a.count('3')
i = a.count('2')
j = a.count('1')
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)

这似乎很好用-感谢大家的帮助,但这对我来说有用