繁体   English   中英

如何添加用户输入的变量?

[英]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 = 2p1f2 = 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

现在,如果添加p1f1p1f2 ,实际上是在添加两个数字而不是添加两个字符串,从而导致字符串连接。 所以这应该给你正确的结果。

请注意,如果flank2既不是'1'也不是'2' ,那么最终你将不会设置p1f1 ,因此会引发异常。 你应该在else部分有一个后备值; 并且也为flank3做到这flank3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM