【问题标题】:Try Except when Return from a function is False当函数返回为 False 时尝试除外
【发布时间】:2017-02-13 22:38:21
【问题描述】:

这是我的号码检查器代码。

number = int(input("Give me a whole number. >> "))
standardNum = 50

def numberChecker(number, standardNum):
    result = standardNum - number
    print(result)
    if result >= 0:
        print("Result is positive.")
        return True
    else:
        print("Result is negative.")
        return False

while True:
    try:
        numberChecker(number, standardNum)
        break
    except numberChecker() == True:
        print("Your number is too big.")
        amountProduct = int(input("Give me a whole small number >> "))

当我将输入输入为“80”时,这就是我看到的 -

Give me a whole number. >> 80
-30
Result is negative.

但是,它不会打印除 numberChecker() 行之外的代码块。

我希望代码打印“你的号码太大”,并要求输入另一个带有句子“给我一个整数>>”的输入,但它似乎不起作用。

我尝试将条件从 True 更改为 False,但仍然没有效果!

有人可以帮忙吗?请! 非常感谢。

【问题讨论】:

  • 你不应该使用异常处理...这里没有抛出异常。

标签: python python-3.x try-catch


【解决方案1】:

我认为您误解了 try-except 块的含义。你显然应该使用if-else

while True:
    if numberChecker(number, standardNum):
        break
    else:
        print("Your number is too big.")
        number = int(input("Give me a whole small number >> "))

【讨论】:

  • 但是如果我想重新提示用户输入一个新号码,我不能使用 if-else 语句。我还可以使用什么其他替代方法?
  • 太棒了!限时结束后,我会在你的答案上打勾!非常感谢!如果可能的话,请给我的问题评分,让其他用户受益!
【解决方案2】:

有几种方法可以制定这种值检查,但如果你想使用异常,这种方法只是你现在的一小步:

standardNum = 50

def numberChecker(number, standardNum):
    if number > standardNum:
        raise ValueError

    return True

while True:
    my_number = int(input("Give me a small whole number: "))

    try:
        if numberChecker(my_number, standardNum):
            break
    except ValueError:
        print("Your number is too big.")

【讨论】:

  • 这也是一种有效的方法。非常感激!谢谢!我还将把它作为我的代码的另一个版本!
【解决方案3】:

不清楚您是否了解异常的目的。话虽如此,这是滥用它们的更好方法,可能会完成您尝试做的事情:

STANDARD_NUM = 50

class NumberTooBigError(Exception): pass

def numberChecker(number, standardNum):
    result = standardNum - number
    if result < 0:  # number >= standardNum
        raise NumberTooBigError()

while True:
    try:
        number = int(input("Give me a whole number. >> "))
        numberChecker(number, STANDARD_NUM)
        break
    except NumberTooBigError:
        print("Your number is too big.")

print("Your number was accepted.")

示例用法:

Give me a whole number. >> 80
Your number is too big.
Give me a whole number. >> 55
Your number is too big.
Give me a whole number. >> 50
Your number was accepted.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多