【问题标题】:Remove redundant lines in short input function删除短输入功能中的冗余行
【发布时间】:2020-07-09 16:24:22
【问题描述】:

我正在尝试清理 24 小时制的输入,下面的代码就是我想出的。重复了几行,我想知道是否有更好的模式来避免它。

def inputHour():
    startHour = input("Starting time (hour): ")
    while not startHour.isdigit():
        startHour = input("Please enter numbers only (0 - 23): ")
    while 0 < int(startHour) > 23:
        startHour = input("Invalid hour. Please enter value from 0 to 23: ")
        while not startHour.isdigit():
            startHour = input("Please enter numbers only (0 - 23): ")
    return startHour

【问题讨论】:

    标签: python function dry


    【解决方案1】:

    总共有 2 个选项;它要么是不是数字,要么是不在所需范围内作为整数。所以,也许你可以将它们合并如下:

    def inputHour():
        startHour = input("Starting time (hour): ")
        while not startHour.isdigit() or 0 < int(startHour) > 23:
            startHour = input("Invalid input. Please enter numbers only (0 - 23): ")
        return startHour
    

    【讨论】:

    • 非常感谢!我现在意识到我是在洞悉“正确”的错误消息。
    【解决方案2】:

    您可以使用仅在您的输入在给定范围内时才中断的 while 循环:

    def inputHour():
        while True:
            startHour = input("Starting time (hour, numbers only): ")
            if startHour.isdigit() and (0 <= int(startHour) <= 23):
                break
        return startHour
    

    【讨论】:

    • 非常感谢!我也会采用你简洁的提示风格。
    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多