满足条件时处理两种情况?

Dealing with two cases when a condition is met?

如果 number 变量是整数,则等于零的输入应变为 'None',任何其他值应保持原样。下面的代码有效,但出于学习目的,我想看看如何以不同的方式实现它?

while True:
    try:
        number = int(input('Type an integer: '))  
        if type(number) == int: # If the value is an integer, it proceeds.
            if number == 0: # Here is another 'if' in case the value is zero which has to turn to the 'None' value
                number = None
                break
            else:    # For any other case it should just keep the value from the input above
                break
    except ValueError:
        print("Type an integer")
print(number)

尝试

number = number if number != 0 else None

因此完整的循环可能如下所示:

while True:
try:
    number = int(input('Type an integer: '))  
    print(number if number != 0 else None)
except ValueError:
    print("Type an integer")

无需检查 type(number) == int,因为您已将其传递给 int,它没有引发 ValueError。如果到这行代码,此时肯定已经是int了。

打破逻辑通常很难遵循。 IMO 这个逻辑更适合你 return 它的方法,使循环的最终结果更清楚。

文字错误的提示令人困惑,您应该评论它是不正确的。

return 逻辑可以使用 if/else 表达式来减少代码。

def ask_for_int():
    while True:
        try:
            number = int(input('Type an integer: '))  
            return None if number == 0 else number
        except ValueError:
            print("Invalid input. Try again")

print(ask_for_int())