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

时间:2015-06-21 02:44:05

标签: python python-3.4

我正在学习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).")

1 个答案:

答案 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测试类型floatnew_time。这总是错的。