python3类型转换是否输入了input()值?

时间:2015-03-28 14:53:23

标签: python python-3.x input

我正在写一个基于雨量器半径的雨量计降水计算器。当我运行我的脚本时,我收到以下错误消息:

Type de raingauge radius [cm]: 5.0
Traceback (most recent call last):
  File "pluviometro.py", line 27, in <module>
    area_bocal = (pi * (raio_bocal * raio_bocal)) # cm.cm
TypeError: can't multiply sequence by non-int of type 'str'

我正在使用 raio_bocal = input("Type de raingauge radius [cm]:") 用于数据输入。使用Python2时,类型转换是自动的。

如何使用float输入python3的值?

2 个答案:

答案 0 :(得分:4)

正如docs

中所述
  

然后函数从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回

因此您需要明确地将其强制转换为float

raio_bocal = float(input("Type de raingauge radius [cm]:"))

答案 1 :(得分:2)

你需要强制转换为float,输入在python3中返回一个字符串:

float(input("Type de raingauge radius [cm]:"))

在投射输入时,使用try / except可能会更安全地使用while循环。

while True:
   inp = input("Type de raingauge radius [cm]:")
   try:
       raio_bocal  = float(inp)
       break
   except ValueError:
       print("Invalid input")