2017-04-24 78 views
0

我这个程序有错误。你能帮我解释一下发生了什么,因为系统似乎把我的变量混淆成字符串。我试图改变变量,但它似乎总是停止工作。为什么这段简单的代码不起作用

# Area of rectangle 
a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
area = a * b 
print(area) 

它给了我这种反应

line 5, in <module> 
    area = a * b 
TypeError: can't multiply sequence by non-int of type 'str' 

鉴于我的业余编码状态,所有我从这个拿的是,它试图乘那里有没有串的字符串。

+0

您不能将'str'乘以另一个'str'或'float'或'byte'。你只能用'int'乘以'str'。 –

+1

男人,我不明白为什么老师让你在学习代码时使用像Pycharm这样的东西。我可以完全理解用于学习Java,C++等语言的IDE,但是如果您正在学习* Python *,有时候我认为文本编辑器/终端在开始时是一个很好的组合。 –

回答

3

以前的答案是正确的,因为简单的修正是将输入强制转换为int的值。但是,这个错误有点神秘:

TypeError: can't multiply sequence by non-int of type 'str'

并值得加以解释。

这里发生了什么是python理解一个字符串是一个字符序列。甚至对于单个字符也是如此,例如'a'或没有字符,例如'' - 您通常不会在python中使用底层字符类型。

而且事实证明,在Python中,你可以乘序列 - 列表或元组或一些这样的 - 由一个数值n重复该序列n次:

>>> [1, 2, 3] * 5 
[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3] 

,所以你可以做这跟弦:

>>> [1, 2, 3] * ['a', 'b', 'c'] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'list' 

>>> "abc" * 3 
'abcabcabc' 

,但你不能用另一个序列乘以序列

和预期,我们在尝试用绳子乘字符串时同样的错误:

>>> "abc" * "def" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'str' 

即使两个字符串看起来像数字:

>>> "6" * "10" 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: can't multiply sequence by non-int of type 'str' 

我希望这可以帮助你理解不只是如何解决错误,但错误是从什么开始的。

0
# Area of rectangle 
a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
#convert input to int. 
area = int(a) * int(b) 
print(area) 
+0

感谢您的帮助:) – HeatwaVe

1

您需要将输入转换为int/float。

int(a) * int(b) 
+0

感谢您的帮助:) – HeatwaVe

0

input()阅读给定的数字作为一个字符串:

input,所以你需要投像这样返回一个字符串。你要转换为数字做任何算术计算之前

a = int(input("What is the length of side a in centimeters")) 
b = int(input("What is the length of side b in centimeters")) 
area = a * b 
print(area) 

OR

a = input("What is the length of side a in centimeters") 
b = input("What is the length of side b in centimeters") 
area = int(a) * int(b) 
print(area) 

注: 可以简化代码(如果你想):

a = int(input("What is the length of side a in centimeters")) 
b = int(input("What is the length of side b in centimeters")) 
print(a*b) 
相关问题