Невозможно решить сообщение об ошибке Python - PullRequest
1 голос
/ 25 июня 2009

Код взят из конспекта лекций К. Поллари-Малми по курсу «Введение в программирование»:

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 ]

10 голосов
/ 25 июня 2009

Несколько ответов уже дали вам суть вашей проблемы, но я хочу сделать заглушку для моего любимого способа получения логического продолжения строки в Python, когда это возможно:

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

Т.е. вместо использования дополнительных скобок, как советуют некоторые ответы, вы можете воспользоваться любыми скобками, которые у вас уже есть - это скажет Python, что вам также нужно продолжение логической строки; -)

6 голосов
/ 25 июня 2009

Вы не можете иметь ничего , даже пробел, после символа продолжения строки.

Либо удалите пробел, либо оберните всю строку в пару скобок. Python неявно объединяет строки между скобками, фигурными скобками и квадратными скобками :

print ( "%2d. %8.2f %8.2f %8.2f" % 
        (i, lyhennys, korkoera, kuukausiera) )
2 голосов
/ 25 июня 2009

Заменить:

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

Автор:

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

Общее замечание: всегда используйте английский для идентификаторов

2 голосов
/ 25 июня 2009

Попробуйте переписать это:

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 он менее читабелен.

2 голосов
/ 25 июня 2009

Попробуйте изменить эти строки:

        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, вероятно, вызывает проблему.

1 голос
/ 25 июня 2009

В общем, я обнаружил, что не использую продолжение строки в Python. Вы можете сделать его чище с помощью скобок и т. Д.

0 голосов
/ 25 июня 2009

"\" означает "эта строка продолжается до следующей строки", и после нее не должно быть никаких символов. Скорее всего, после этого есть пробел.

Два решения:

Убедитесь, что после;

нет пробелов

Переписать оператор в одну строку:

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

Вы можете даже использовать круглые скобки, чтобы они поместились в несколько строк:

print "%2d. %8.2f %8.2f %8.2f" % (
       i, lyhennys, korkoera, kuukausiera)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...