2015-02-09 4 views
0

Я новичок в Python, и я не могу понять, что не так с этим кодом. Все работает, за исключением того, что вместо того, чтобы распечатывать мой оператор печати, я получаю эту ошибку вместо этого, "" и ваш любимый цвет% s ") (имя, квест, цвет) TypeError: объект« NoneType »не может быть вызван» Вот мой код ниже ,ТипError: NoneType объект не может быть вызван

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) 

ответ

9

Ваш синтаксис строки формата неправильно

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

Хотя вы можете предпочесть новую .format стиль

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

Это имеет хорошее преимущество использования общего {} вместо того, чтобы указать типа, как в случае со старым стилем.


Ошибка вы получаете из-за оценки print. Учитывая ошибку я предполагаю, что вы используете python3, который делает что-то вроде этого

print('hello')() 

Это оценивается как

(print('hello'))() 

который будет вызывать печать с аргументом 'hello' первым. print функция возвращает None так, что происходит дальше

(None)() 

None не отозваны, следовательно, ваша ошибка

+0

Один из лучших объяснений, которые я видел еще +1 – mojo706

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