我正在写一个基于雨量器半径的雨量计降水计算器。当我运行我的脚本时,我收到以下错误消息:
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
的值?
答案 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")