如果寻找浮动的语句不起作用

If statement looking for float is not working

我正在学习 Python,我编写了一个简单的脚本来创建我今天需要完成的任务列表。在输入要完成的任务后,我让脚本询问完成该任务需要多长时间。它可以将浮点数添加到一个名为 "totaltime" 的变量中,但是如果你输入一个单词,它就会崩溃,所以我创建了一个 if else 语句来查找用户是否输入了整数和浮点数,如果他们没有输入,让他们重复这个过程。出于某种原因,当我 运行 它时,它无法查看输入是浮点数还是整数,它只是在 else 语句上移动并重复它。请帮忙!我一直在网上搜索,找不到解决方案。我添加了脚本的问题部分,这样更容易阅读(和 totaltime 变量)

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).")

您应该在 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 的 return 值将始终为 string

如果你确实想检查类型,你应该使用isinstance

例如

if isinstance(new_time, (int, float)):

但您的代码实际上是针对 new_time 测试类型 intfloat。这永远是错误的。