当前位置: 首页 > 面试题库 >

如何检查用户输入是否为浮动

严俊友
2023-03-14
问题内容

我正在学习“困难方式” Python35。下面是原始代码,我们被要求对其进行更改,以便它可以接受其中不包含0和1的数字。

def gold_room():
    print "This room is full of gold. How much do you take?"

    next = raw_input("> ")

    if "0" in next or "1" in next:
        how_much = int(next)

    else:
        dead("Man, learn to type a number.")

    if how_much < 50:
        print "Nice, you're not greedy, you win!"
        exit(0)

    else:
        dead("You greedy bastard!")

这是我的解决方案,可以很好地运行并识别浮点值:

def gold_room():
    print "This room is full of gold. What percent of it do you take?"

    next = raw_input("> ")

    try:
        how_much = float(next)
    except ValueError:
        print "Man, learn to type a number."
        gold_room()

    if how_much <= 50:
        print "Nice, you're not greedy, you win!"
        exit(0)

    else:
        dead("You greedy bastard!")

通过搜索类似的问题,我找到了一些答案,这些答案可以帮助我编写另一个解决方案,如下面的代码所示。问题是,使用isdigit()不允许用户输入浮点值。因此,如果用户说要取50.5%,它将告诉他们学习如何键入数字。否则它适用于整数。我该如何解决?

def gold_room():
    print "This room is full of gold. What percent of it do you take?"

    next = raw_input("> ")

while True:
    if next.isdigit():
        how_much = float(next)

        if how_much <= 50:
            print "Nice, you're not greedy, you win!"
            exit(0)

        else:
            dead("You greedy bastard!")

    else: 
        print "Man, learn to type a number."
        gold_room()

问题答案:

isinstance(next, (float, int))如果next已经从字符串转换了,它将简单地完成操作。在这种情况下不是。因此,re如果要避免使用,则必须使用进行转换try..except

我建议使用try..except您之前if..else拥有的代码块,而不是代码块,而是将更多的代码放入其中,如下所示。

def gold_room():
    while True:
        print "This room is full of gold. What percent of it do you take?"
        try:
            how_much = float(raw_input("> "))

            if how_much <= 50:
                print "Nice, you're not greedy, you win!"
                exit(0)

            else:
                dead("You greedy bastard!")

        except ValueError: 
            print "Man, learn to type a number."

这将尝试将其强制转换为浮点数,如果失败,将引发ValueError被捕获的浮点数。要了解更多信息,请参见Python教程。



 类似资料:
  • 我试图检查用户是否输入了字符串。如果用户输入了字符串,我的程序应该输出错误消息。如果用户输入了整数,我的程序应该继续运行 这是我到目前为止的代码,我需要添加另一个条件来检查用户是否输入字符串,我尝试了一些方法,但它们不起作用

  • 问题内容: 如何检查给定的输入控件是否为空?我知道该字段上有一个属性,该属性告诉您给定的字段最初是否为空,但是如果有人填充该字段并再次提取整个内容该怎么办? 我认为上述功能是必要的,因为它对告知用户该字段必不可少。 任何想法将不胜感激! 问题答案: 很简单: 您也可以使用代替,如果这对您来说更自然。 更好的替代方法可能是真正利用Angular的形式能力: 在此处更新了Plnkr。

  • 问题内容: 我试图找到最大的立方根,即整数,小于12,000。 我不确定如何检查它是否是整数!我可以将其转换为字符串,然后使用索引来检查最终值,看看它们是否为零,但这似乎很麻烦。有没有更简单的方法? 问题答案: 要检查浮点值是否为整数,请使用以下方法: 该方法已添加到Python 2.6中的类型中。 请考虑在Python 2中为(整数操作数的底数除法!),并且浮点算术可能不精确(a是使用二进制分数

  • 我试图创建一个简单的程序,从用户输入中提取两个数字,并将它们相加在一起。为了正确使用它,我已经把它放下来了,但是如果用户输入其他东西,比如字符串,我会试图阻止崩溃。我如何检查输入而没有异常,因为我听说它们是糟糕的做法? 理想情况下,我希望它只是重复最初的问题,要求输入一个数字。我想这会在一个循环中? 编辑:新代码 旧代码

  • 问题内容: 我正在制作一个简单的程序,可让您添加比赛结果以及完成比赛所用的秒数。所以要输入时间,我这样做: 所以我的问题是,如果用户输入的不是正数,该如何向用户显示错误消息?就像MessageDialog一样,在输入数字之前会提示您错误。 问题答案: 如果无法解析,则会抛出一个。如果您只想在输入无效的情况下重试,则将其包装成这样的循环:

  • 问题内容: 如何检查输入值是整数还是浮点数? 假设312/100 = 3.12,在这里我需要检查3.12是浮点值还是整数值,即没有任何小数位值。 问题答案: 您应该检查数字的小数部分是否为0。 要么 或类似的东西