Что не так с форматированием строки в моей строке кода и почему оно говорит: TypeError: объект 'NoneType' не вызывается?

1

Я только недавно начал кодирование и столкнулся с этой проблемой, которую я не могу решить. Это мой код:

name = input("What is your name? ")
quest = input("What is your quest? ")
color =input("What is your favorite color? ")
print ("Ah, so your name is %s, your quest is %s, ") \
("and your favorite color is %s." % (name, quest, color))

и это проблема:

line 6, in <module>
  ("and your favorite color is %s.") % (name, quest, color)
TypeError: 'NoneType' object is not callable
Теги:
string
python-3.x

3 ответа

2
Лучший ответ

Удалите лишние парезы и сделайте что-нибудь вроде

print ("Ah, so your name is %s, your quest is %s, \

and your favorite color is %s." % (name, quest, color))
  • 1
    огромное спасибо
2

Проблема в том, что вы не используете оператор разделения линий правильно, поэтому вы обрабатываете результат печати, который является None, как вызываемый.

Посмотрите на следующее:

print ("Ah, so your name is %s, your quest is %s, ")

Это напечатает:

Ah, so your name is %s, your quest is %s,

и вызов print вернет None, поэтому после вашего кода вы будете иметь:

None("and your favorite color is %s." % (name, quest, color))

который генерирует эту ошибку.

Вы можете решить эту проблему:

print ("Ah, so your name is %s, your quest is %s, "
    "and your favorite color is %s." % (name, quest, color))

Я настоятельно рекомендую вам использовать f-строку, если вы используете Python 3. 6+:

name = input("What is your name? ")
quest = input("What is your quest? ")
color = input("What is your favorite color? ")

print(f"Ah, so your name is {name}, your quest is {quest}, and your favorite color is {color}")

Обратите внимание, что использование f-строк улучшает читаемость вашего кода.

  • 0
    Большое спасибо!
1

Используйте .format() или стандартную форматированную интерполяцию строк:

name = input("What is your name? ")
quest = input("What is your quest? ")
color =input("What is your favorite color? ")
print ("Ah, so your name is {}, your quest is {}, and your favorite color is {}"
       .format(name, quest, color))

или же

print (f"Ah, so your name is {name}, your quest is {quest}, "\
       "and your favorite color is {color}")

за:

What is your name? What is your quest? What is your favorite color? Ah, so your name is a, your quest is b, and your favorite color is c

Доку:

  • 0
    О, МОЙ БОГ! СПАСИБО! Это было действительно полезно!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню