2014-02-18 4 views
0

я получаю неожиданный характер после ошибки символа продолжения строки в этой строкеЯ получаю неожиданный характер после ошибки символа продолжения строки

print (\t,"Order total $",format(total, "10.2"),\n\t,"Discount $",format(disc,"10.2"),\n\t,"Amount Due $",format (due, "10.2"),sep="") 

кто-то может сказать мне, что это значит и как это исправить? благодаря

def finddiscount(quantity): 
     if quantity >= 1 and quantity <= 9: 
      discount = 0 
     elif quantity >= 10 and quantity <= 19: 
      discount = .2 
     elif quantity >= 20 and quantity <= 49: 
      discount = .30 
     elif quantity >= 50 and quantity <= 99: 
      discount = .40 
     elif quantity >= 100: 
      discount = .50 
    def calctotal(quantity, price): 
     disc = (price*quantity)*finddiscount(quantity) 
     total = (price*quantity) 
     due = (price*quantity)-(price*quantity)*dicount 
     print (\t,"Order total $",format(total, "10.2"),\n\t,"Discount $",format(disc,"10.2"),\n\t,"Amount Due $",format (due, "10.2"),sep="") 
    def main(): 
     quantity = int(input("How many packages where purchased?")) 
     price = float(input("How much is each item?")) 
     calctotal(quantity, price) 
    main() 

ответ

5

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

print ("\t","Order total $",format(total, "10.2"),"\n\t","Discount $",format(disc,"10.2"),"\n\t","Amount Due $",format (due, "10.2"),sep="") 
     ^          ^          ^

И еще один способ формата использовать str.format так:

print ("\tOrder total $ {:10.2}\n\tDiscount ${:10.2}\n\tAmount Due ${:10.2}".format(total, disc, due)) 
+0

Не добавляйте 'g' там без причины. Чтобы получить точно такие же результаты, как 'format (...," 10.2 ")' просто используйте '{: 10.2}'. – abarnert

1

Ashwini-х ответ объясняет, почему ваш код дает ошибку.

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

print("\tOrder total $", format(total, "10.2"), 
     "\n\tDiscount $", format(disc, "10.2"), 
     "\n\tAmount Due $", format(due, "10.2"), sep="") 

(я также фиксируется все, чтобы поместиться на экране 80-столбца, который является стандартом по уважительным причинам-за один вещь, это на самом деле читается на таких вещах, как StackOverflow, а для другого это делает гораздо более очевидным, что ваш код на самом деле не выстраивается так, как вы хотели его ...)

В этом случае, вероятно, было бы еще лучше для использования трех отдельных вызовов print. Тогда вам не нужны эти \n символов в первую очередь:

print("\tOrder total $", format(total, "10.2"), sep="") 
print("\tDiscount $", format(disc, "10.2"), sep="") 
print("\tAmount Due $", format(due, "10.2"), sep="") 

Между тем, так как вы уже используете функцию format, вы не должны иметь никаких проблем обучения о методеformat, что делает вещи еще проще. Опять же, вы можете использовать три отдельные заявления, но в этом случае, может быть многострочным (тройные кавычками) строка будет легче читать:

print("""\tOrder total ${:10.2} 
\tDiscount ${:10.2} 
\tAmount Due ${:10.2}""".format(total, disc, due)) 

Смотрите раздел учебника по Fancier Output Formatting для получения более подробной информации о всех это.

Смежные вопросы