【问题标题】:Why is this data being stored as a string and not a float? (Python)为什么这些数据存储为字符串而不是浮点数? (Python)
【发布时间】:2018-03-14 12:18:59
【问题描述】:

我正在编写一个简单的 Python 程序,将用户输入的单圈时间存储在一个列表中,然后在该列表上执行一些函数。

我的问题是,尽管在将单圈时间附加到列表之前明确将单圈时间声明为“浮动”,但它们仍以字符串形式存储。这意味着我无法在列表中执行 sum() 之类的函数,因为我收到错误消息,例如:TypeError: unsupported operand type(s) for +: 'int' and 'str'。

代码如下:

lapTimes = []

count = 0

while True:
    count += 1
    lap = input("Enter lap time " + str(count) + ": ")

if lap == 'x':
    break

else:
    float(lap)
    print(type(lap))
    lapTimes.append(lap)


print(type(lapTimes[-1]))
print("Fastest Lap time was: ", min(lapTimes))
print("Slowest lap time was: ", max(lapTimes))

在 else 子句中将 'lap' 声明为浮点数后,我写了一行来打印 'lap' 的数据类型,运行时我被告知它是一个字符串!

我对 print(type(lapTimes[-1])) 行做了同样的事情,只是为了确保,是的​​,我仍然被告知数据是一个字符串。

底部应该有更多的代码行打印列表的总和和平均单圈时间,由于这个问题,这将不起作用。

【问题讨论】:

  • 请在while循环中缩进你的代码。

标签: python string list


【解决方案1】:

我的问题是,尽管明确将单圈时间声明为“浮动” 在将它们附加到列表之前,它们仍然被存储为 字符串。

你没有做过这样的事。 Python 没有变量声明。您只需调用 float 类型构造函数并将字符串作为参数传递给它。它返回您期望的float 值,但您从未捕获它的输出,它会立即被丢弃。相反,这样做:

lapTimes.append(float(lap))

【讨论】:

  • @user2357112 呃,感谢您修复所有这些错误。
【解决方案2】:

因为您没有分配float(lap) 的值。写

lap=float(lap)

或更好

lap = float(input("Enter lap time " + str(count) + ": "))

【讨论】:

    【解决方案3】:

    请查看有关 float() 的文档 https://docs.python.org/3/library/functions.html#float

    float() 的返回值是一个浮点数。

    在 else 块中,你需要编写如下代码:

    else:
        lap = float(lap)
        print(type(lap))
        lapTimes.append(lap)
    

    【讨论】:

    • 引用文档总是好的,但您或许应该将相关部分放在答案本身中。
    【解决方案4】:

    你应该写lap = float(lap)。只写 float(lap) 对原来的 lap 变量没有任何影响。

    【讨论】:

      【解决方案5】:
      lapTimes = []
      
      count = 0
      
      while True:
          count += 1
          lap = input("Enter lap time " + str(count) + ": ")
      
          if lap == 'x':
              break
      
          else:
              lap = float(lap)
              print(type(lap))
              lapTimes.append(lap)
      
      
      print(type(lapTimes[-1]))
      print("Fastest Lap time was: ", min(lapTimes))
      print("Slowest lap time was: ", max(lapTimes))
      

      您在转换为浮动后错过了圈数分配。这就是为什么看到错误。

      【讨论】:

        猜你喜欢
        • 2019-03-15
        • 1970-01-01
        • 1970-01-01
        • 2023-03-18
        • 2018-05-08
        • 2019-10-17
        • 2022-06-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多