Python 3 - 代码不会将大于1的用户输入识别为数字

时间:2016-04-20 00:42:25

标签: python python-3.x

我为Python中的信息学练习创建了以下python代码。代码将运行,但不会将大于1的用户的输入识别为数字。任何帮助将不胜感激。

def isfloat(string):
    try:
        float(string)
        if float(string) == True:
            return True
    except ValueError:
        return False

user_input = input('Please enter a real number. Type \"done\" to exit and tally your entries \n> ')
data = 0
count = 0

while isfloat(user_input) == True:
    data = data + float(user_input)
    count = count + 1
    user_input = input("Please enter another value \n> ")
    isfloat(user_input)

else:
    if (isfloat(user_input) == False) and (user_input == "done"):
        print("The sum of your entries is: " + str(data))
        print("The number of entries was: " + str(count))
        exit()
    else:
        print("The entry was not a numeric value \n")
        print("The sum of your valid entries is: " + str(data))
        print("The number of valid entries was: " + str(count))
        exit()

3 个答案:

答案 0 :(得分:1)

这太荒谬了:

self

检查if float(string) == True: 转换后的值是否等于float(数字为1)。

只需检查异常并转到:

True

答案 1 :(得分:0)

问题在于float(string)永远不会返回True;它将始终返回多个类型float ,如果输入无法转换为浮点数,它将引发ValueError

要解决此问题,您需要删除if语句,并在True功能中调用float(string)后返回isfloat。如果float(string)提出ValueError,则isfloat会像您预期的那样返回False;否则,它将继续并返回True

def isfloat(string):
    try:
        float(string)
        return True
    except ValueError:
        return False

答案 2 :(得分:0)

问题在于您的isfloat。您不应该将float的结果与True进行比较。而是做类似的事情:

def isfloat(string):
    try:
        float(string)
        return True
    except ValueError:
        return False

您不需要实际执行任何返回值为float的内容。如果该调用没有触发错误 - 你有一个浮点数,所以只需返回True

使用行

可能很诱人
if float(string): return True

这将几乎工作,但会错误分类"0"