我正在学习Python,我编写了一个简单的脚本,创建了我今天需要完成的任务列表。在对要完成的任务进行输入之后,我让脚本询问完成该任务需要多长时间。它可以将float添加到一个名为" totaltime"的变量中。但如果你输入一个单词,它会崩溃,所以我创建了一个if else语句,查找用户是否输入了一个整数并浮动,如果他们没有,那么让他们重复这个过程。出于某种原因,当我运行它时,它无法看到输入是浮点数还是整数,它只是在else语句上移动并重复它。请帮忙!我一直在搜索互联网,无法找到解决方案。我添加了脚本的问题部分,以便更容易阅读(以及总时变量)
totaltime = float()
while True:
print("How long will this task take?")
new_time = input("> ")
if new_time == int or new_time == float:
totaltime = float(totaltime) + float(new_time)
break
else:
print("You must enter a valid number, written as (H.M).")
答案 0 :(得分:0)
您应该在try
/ except
块中进行转换,而不是检查类型。
totaltime = 0.0
while True:
try:
new_time = float(input("How long will this task take?\n> "))
totaltime += new_time
break
except ValueError:
print("You must enter a valid number, written as (H.M).")
无论如何,您检查类型的尝试都存在缺陷。 input
的返回值始终为string
。
如果您确实要检查类型,则应使用isinstance
e.g。
if isinstance(new_time, (int, float)):
但您的代码实际上是针对int
的值测试类型float
或new_time
。这总是错的。