【问题标题】:Dealing with two cases when a condition is met? [closed]满足条件时处理两种情况? [关闭]
【发布时间】:2022-01-10 15:36:18
【问题描述】:

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

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)

【问题讨论】:

  • 有无数种不同的方式来实现这一目标。例如,您可以反转 if 语句的条件并交换 ifelse 部分。
  • 你不需要 `if type(number) == int' 因为你的异常已经处理了

标签: python if-statement while-loop


【解决方案1】:

试试

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

【讨论】:

  • 能否将其包含在脚本中以确定哪​​些部分可以省略?
【解决方案2】:

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

打破逻辑通常很难遵循。 IMO 这种逻辑将更适合您 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())

【讨论】:

  • 能不能把不使用函数的方法也加进去?和原来的脚本差不多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多