除非函数的返回为Fals,否则尝试

2024-10-03 02:41:20 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的号码检查码。在

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”时,我看到的是-

^{pr2}$

但是,它不打印except numberChecker()行下面的代码块。

我希望代码打印“您的数字太大”,并要求输入另一个句子“给我一个完整的小数字>;”,但似乎行不通。在

我试着把条件从真变假,但还是没有效果!在

有人能帮忙吗?拜托! 非常感谢。在


Tags: truenumberinputreturnisresultintme
3条回答

有几种方法可以制定此值检查,但如果您希望使用异常,则此方法与您现在的情况相比只是一个小小的飞跃:

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

我想你误解了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 >> "))

不清楚你是否理解例外的目的。尽管如此,这里有一个更好的方法来滥用它们,也许可以完成你想要做的事情:

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

示例用法:

^{pr2}$

相关问题 更多 >