0

你好,我是 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: unsupported operand type(s) for %: 'NoneType' 和 'str'

现在我知道此类问题的通常答案是将输入从字符串转换为整数并调整使用的操作数类型以匹配。但是在这种情况下,我实际上想使用字符串形式的输入,那么问题出在哪里?

PS 我正在使用 Ideone.com 来编译这段代码。

4

3 回答 3

1
... launch" %name)

代替

... launch") %name
于 2012-09-10T10:18:18.390 回答
0

字符串格式%需要进入(); 该print函数返回None,并且您正在尝试格式化结果。

假设您使用的是 Python 3,您的初始调用str()也是不必要的;input()返回一个字符串。(如果你使用的是 Python 2,你应该使用raw_input()而不是input(),它也返回一个字符串。)

于 2012-09-10T10:15:22.200 回答
0

这个问题有两个部分:

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

如果这有效(那么您使用的是 Python 2),如果不是,则因为在 Python 3 中您需要将 print 语句括在括号中,并且会得到一个SyntaxError.

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

第二个是 Ideone.com 不接受用户输入,因此字符串name保留为 None (这不是字符串),这解释了TypeError.

name = None
print ("Welcome %s, your doomesday weapon of impolite mutant pigeons is ready for launch" % name)
于 2012-09-10T10:18:26.433 回答