删除短输入函数中的多余行

Remove redundant lines in short input function

我正在尝试为 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

总共有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

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

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