【问题标题】:How to add variables that have been inputed by the user?如何添加用户已经输入的变量?
【发布时间】:2014-01-27 22:40:27
【问题描述】:

这是一个简短的问题,这是我的代码:

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。我做错了什么?

【问题讨论】:

  • 不要合并字符串,而是转换成整数,把它们放在一起,取结果。

标签: python variables add


【解决方案1】:

摆脱所有那些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

【讨论】:

    【解决方案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
    

    【讨论】:

      【解决方案3】:

      在所有作业中,您始终指定var = str(number)。所以最后,你总是得到一个数字的字符串表示。你最好直接保存数字(当你有多个互斥的 if 检查时也使用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 这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2021-02-21
        相关资源
        最近更新 更多