[英]How to add variables that have been inputed by the user?
这是一个简短的问题,这是我的代码:
flank2=raw_input("How many units are flanking from behind?: ")
if flank2 == '1':
p1f1 = str(1.5)
if flank2 == '2':
p1f1 = str(2)
else:
p1f = str(1)
p2f = str(1)
flank3=raw_input("How many units are flanking from the side?: ")
if flank3 == '1':
p1f2 = str(1.25)
if flank3 == '2':
p1f2 = str(1.5)
if flank3 == '3':
p1f2 = str(1.75)
if flank3 == '4':
p1f2 = str(2)
print p1f1 + p1f2
让我们说p1f1 = 2
和p1f2 = 1.5
。 当我在python中执行此操作时,我得到21.5
,但我想获得3.15
。 我究竟做错了什么?
摆脱所有str()
转换。 当变量是字符串时, +
表示连接而不是添加。 将它们保留为浮点数。
flank2=raw_input("How many units are flanking from behind?: ")
if flank2 == '1':
p1f1 = 1.5
if flank2 == '2':
p1f1 = 2
else:
p1f = 1
p2f = 1
flank3=raw_input("Hoaw many units are flanking from the side?: ")
if flank3 == '1':
p1f2 = 1.25
if flank3 == '2':
p1f2 = 1.5
if flank3 == '3':
p1f2 = 1.75
if flank3 == '4':
p1f2 = 2
当您将两个字符串一起添加时,它们会连接在一起,如下所示:
>>> '1.34' + '3.25'
'1.343.25'
raw_input
返回一个字符串。 您应该在传递给flank3
之前在raw_input
上调用int()
,并将比较更改为数字而不是字符串。
将数字添加到一起时,它们使用加法而不是仅连接。
所以新代码看起来像这样:
flank2=int(raw_input("How many units are flanking from behind?: "))
if flank2 == 1:
p1f1 = 1.5
if flank2 == 2:
p1f1 = 2
else:
p1f = 1
p2f = 1
flank3=int(raw_input("Hoaw many units are flanking from the side?: "))
if flank3 == 1:
p1f2 = 1.25
if flank3 == 2:
p1f2 = 1.5
if flank3 == 3:
p1f2 = 1.75
if flank3 == 4:
p1f2 = 2
print p1f1 + p1f2
在所有作业中,始终指定var = str(number)
。 所以最后,你总是得到一个数字的字符串表示。 你最好直接保存数字(如果检查有多个mutally exclusive,也可以使用elif
):
# for flank2
if flank2 == '1':
p1f1 = 1.5
elif flank2 == '2':
p1f1 = 2
else:
p1f = 1
p2f = 1
# and for flank3
if flank3 == '1':
p1f2 = 1.25
elif flank3 == '2':
p1f2 = 1.5
elif flank3 == '3':
p1f2 = 1.75
elif flank3 == '4':
p1f2 = 2
现在,如果添加p1f1
和p1f2
,实际上是在添加两个数字而不是添加两个字符串,从而导致字符串连接。 所以这应该给你正确的结果。
请注意,如果flank2
既不是'1'
也不是'2'
,那么最终你将不会设置p1f1
,因此会引发异常。 你应该在else
部分有一个后备值; 并且也为flank3
做到这flank3
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.