我收到了一个值错误,即使我尝试使用代码,它也不起作用!
我怎样才能做到对? - 我使用的是Python 3.3.2!
以下是代码:
正如您所看到的,该程序会询问您可以行走多少英里,并根据您输入的内容为您提供响应。
这是文本格式的代码:
print("Welcome to Healthometer, powered by Python...")
miles = input("How many miles can you walk?: ")
if float(miles) <= 0:
print("Who do you think you are?!! Go and walk 1000 miles now!")
elif float(miles) >= 10:
print("You are very healthy! Keep it up!")
elif float(miles) > 0 and miles < 10:
print("Good. Try doing 10 miles")
else:
print("Please type in a number!")
miles = float(input("How many miles can you walk?: "))
if miles <= 0:
print("Who do you think you are?!! Go and walk 1000 miles now!")
elif miles >= 10:
print("You are very healthy! Keep it up!")
elif miles > 0 and miles < 10:
print("Good. Try doing 10 miles")
答案 0 :(得分:6)
您需要考虑用户可能没有填写正确的值:
try:
miles = float(input("How many miles can you walk? "))
except ValueError:
print("That is not a valid number of miles")
try/except
处理ValueError
尝试将输入转换为浮点数时可能出现的float
。
答案 1 :(得分:3)
问题正是回溯日志所说的:Could not convert string to float
大多数人解决此问题的方法是使用try/except
(请参阅here),或使用isdigit()
函数(请参阅here)。
<强>尝试/除强>
try:
miles = float(input("How many miles can you walk?: "))
except:
print("Please type in a number!")
<强> ISDIGIT()强>
miles = input("How many miles can you walk?: ")
if not miles.isdigit():
print("Please type a number!")
请注意,如果字符串
中有小数点,后者仍将返回false好的,我暂时无法回复你,所以我会发布答案以防万一。
while True:
try:
miles = float(input("How many miles can you walk?: "))
break
except:
print("Please type in a number!")
#All of the ifs and stuff
代码非常简单:
答案 2 :(得分:1)
追溯意味着它在锡上的含义。
>>> float('22')
22.0
>>> float('a lot')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'a lot'
float
可以将看起来像有效小数的字符串转换为float
s。它无法转换任意字母数字字符串,尤其包括'How am I supposed to know?'
。
如果要处理任意用户输入,则必须使用try/except
块来捕获此异常。
答案 3 :(得分:1)
这里的意思是它不能转换字母数字字符串,在某些情况下,如果您正在抓取数据或类似$ 400之类的东西,则$符号是字母数字字符,那么它会考虑一个字符串,如果您尝试将其转换为浮点型,则会显示错误,我给你此示例显示它仅将数字转换为浮点数,在这种情况下,我解决了如下问题:data ='$ 400',price = data [1:],然后if,if(float(price)<300):并且有效