另一种不受支持的操作数问题(python 3)

另一种不受支持的操作数问题(python 3),python,string,operand,Python,String,Operand,您好,我是python和编程新手(昨晚刚开始!),我编写了一个小程序,粘贴在下面: name = str(input("please state your name: ")) print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch") %name 但是,这会不断返回此错误: 回溯(最后一次调用):打印文件“prog.py”,第2行(“欢迎%s,你的末日武器,不礼貌的变种鸽

您好,我是python和编程新手(昨晚刚开始!),我编写了一个小程序,粘贴在下面:

name = str(input("please state your name: ")) 
print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch") %name
但是,这会不断返回此错误:

回溯(最后一次调用):打印文件“prog.py”,第2行(“欢迎%s,你的末日武器,不礼貌的变种鸽子已经准备好发射”)%name-TypeError:不支持%的操作数类型:'NoneType'和'str'

现在我知道,解决这类问题的通常方法是将输入从字符串转换为整数,并调整使用的操作数类型以匹配。但是在本例中,我实际上希望使用字符串形式的输入,那么问题在哪里呢


另外,我正在使用Ideone.com编译此代码。

字符串格式
%
需要放入
()
中;
print
函数返回
None
,您正在尝试格式化结果

假设您使用的是Python 3,那么对
str()
的初始调用也是不必要的
input()
返回一个字符串。(如果您使用的是Python 2,那么应该使用
raw\u input()
而不是
input()
,后者也会返回字符串。)

而不是

... launch") %name

这个问题分为两个部分:

name = "andy"
print "Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch" %name
如果这样做有效(那么您使用的是Python2),如果不行,那是因为在Python3中,您需要将print语句括在括号中,并将得到一个语法错误

name = "andy"
print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch" %name)
第二个是Ideone.com不接受用户输入,因此字符串
name
保留为None(不是字符串),这解释了
类型错误

name = None
print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch" % name)

谢谢你,好先生!你的改动修正了我的程序。我会投票支持你,但我没有足够的声望:P。这个计划很有效,但现在我遇到了另一个问题。出于某种原因,当我做出以下声明时:如果name==“John”,我会收到一个错误,说我的语法无效。如果您能提供此问题的解决方案以及负面版本(name!=“John”),我们将不胜感激。@rationalystic这可能是因为您在行尾缺少了一个
?(没有完整的代码很难看到。)您应该阅读Python教程,例如深入Python。另外,你应该投票并接受有用的答案:)。哈哈,我知道你想说什么,但我还没有足够的声望来投票给别人。如果可以,我会的。
print()
必须包含要打印的整个字符串。
name = None
print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch" % name)