Удаление избыточных строк в короткой функции ввода - PullRequest
3 голосов
/ 09 июля 2020

Я пытаюсь очистить ввод для 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 ]

2 голосов
/ 09 июля 2020

Всего у вас есть 2 варианта; это либо не di git, либо не в желаемом диапазоне как целое число. Итак, возможно, вы сможете объединить их, как показано ниже:

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
1 голос
/ 09 июля 2020

Вы можете использовать while l oop, которое прерывается только тогда, когда ваш ввод находится в заданном диапазоне:

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