2014-11-24 59 views
0

我在这个简单的程序中做错了什么?提前致谢。基本程序类型错误。我究竟做错了什么?

>>> x=input("x: ") 
x: 2  
>>> y=input("y: ")  
y: 4 
>>> print (y*x) 

Traceback (most recent call last): 
    File "<pyshell#2>", line 1, in <module> 
    print (y*x) 
TypeError: can't multiply sequence by non-int of type 'str' 
>>> 
+0

你不能乘以'str's,这是'input()'给你的。例如,“汤姆”是什么?“苹果”? – csmckelvey 2014-11-24 05:09:14

回答

1

x,y是字符串。你需要做int(x)。如果其中任何一个不是整数(空(仅用户按回车),空格,符号,字母),您可能需要捕获该异常。

print (int(y) * int(x)) 

[这一定是其他问题,重复此...]

-2

输入()方法返回一个字符串值。为了得到一个数值,使用eval()

x = eval(input("x: ")) 
+2

'eval()'而不是'int()'是一个安全漏洞,可能会有脚本注入攻击。只需使用int()。 – smci 2014-11-24 05:11:14

+0

的确,尽管我怀疑任何人在这样一个概念上挣扎的人都会在这个问题的环境中发展:P – 2014-11-24 05:13:41

+2

早期教他们良好的习惯。 – 2014-11-24 05:14:51

0

你可能已经进入input"4"。只有那么str型的。如果你只输入4输入,然后T将int。那么你的程序将运行fine.If你把它作为string然后用

print (int(x)*int(y)) 

使用type(x)看到的类型。