无法解决Python错误消息

时间:2009-06-25 15:49:33

标签: python

该代码来自K. Pollari-Malmi关于“编程简介”课程的讲义:

def main():
    print "Ohjelma laskee asuntolainan kuukausierat." 
    rivi = raw_input("Anna lainasumma: ") 
    lainasumma = float(rivi) 
    rivi = raw_input("Anna laina-aika vuosina: ") 
    laina_aika = int(rivi) 
    if laina_aika < 1: 
        print "liian lyhyt laina-aika" 
    else: 
        kk_lkm = 12 * laina_aika 
        rivi = raw_input("Anna korkoprosentti: ") 
        korko = float(rivi) 
        lyhennys = lainasumma / kk_lkm 
        paaoma = lainasumma 
        i = 0 
        print " lyhennys korko yhteensa" 
        while i < kk_lkm: 
            i = i + 1 
            korkoera = korko / 1200.0 * paaoma 
            paaoma = paaoma - lyhennys 
            kuukausiera = korkoera + lyhennys 
            print "%2d. %8.2f %8.2f %8.2f" % \         # mistake probably here
                (i, lyhennys, korkoera, kuukausiera) 
main()

我收到语法错误

SyntaxError: unexpected character after line continuation character

如何解决错误消息?

7 个答案:

答案 0 :(得分:10)

几个答案已经为您提供了问题的症结所在,但是我想在可行的情况下使用我最喜欢的方式插入Python中的逻辑行继续:

print "%2d. %8.2f %8.2f %8.2f" % (         # no mistake here
            i, lyhennys, korkoera, kuukausiera)

即,而不是像一些答案建议使用额外的括号,你可以利用你自然碰巧拥有的任何括号 - 这将告诉Python你也需要逻辑线延续; - )

答案 1 :(得分:6)

在换行符之后,你不能有任何,甚至是空格。

删除空格,或将整行包装在一对括号中。 Python implicitly joins lines between parentheses, curly braces, and square brackets

print ( "%2d. %8.2f %8.2f %8.2f" % 
        (i, lyhennys, korkoera, kuukausiera) )

答案 2 :(得分:2)

尝试修改这些行:

        print "%2d. %8.2f %8.2f %8.2f" % \         # mistake probably here
            (i, lyhennys, korkoera, kuukausiera)

到这一行:

        print "%2d. %8.2f %8.2f %8.2f" % (i, lyhennys, korkoera, kuukausiera)

另请注意,以反斜杠结尾的行不能发表评论。因此,#mistake probably here评论可能会导致问题。

答案 3 :(得分:2)

尝试重写此内容:

print "%2d. %8.2f %8.2f %8.2f" % \         # mistake probably here
            (i, lyhennys, korkoera, kuukausiera)

对此:

print ("%2d. %8.2f %8.2f %8.2f" %
       (i, lyhennys, korkoera, kuukausiera))

\也应该有效,但IMO的可读性较差。

答案 4 :(得分:2)

替换:

print "%2d. %8.2f %8.2f %8.2f" % \
    (i, lyhennys, korkoera, kuukausiera)

人:

print "%2d. %8.2f %8.2f %8.2f" % (
    i, lyhennys, korkoera, kuukausiera)

一般注释:始终使用英语作为标识符

答案 5 :(得分:1)

一般来说,我发现我不在Python中使用行继续。你可以用圆括号等清洁它。

答案 6 :(得分:0)

“\”表示“此行继续到下一行”,并且后面不能包含任何字符。之后可能还有一个空格。

两个解决方案:

确保之后没有空格;

在一行上重写声明:

print "%2d. %8.2f %8.2f %8.2f" % (i, lyhennys, korkoera, kuukausiera)

您甚至可以使用括号使其适合多行:

print "%2d. %8.2f %8.2f %8.2f" % (
       i, lyhennys, korkoera, kuukausiera)