Python Пока true, Try / Except, возвращаемое значение - PullRequest
0 голосов
/ 28 мая 2018

Когда я пытаюсь вернуть значение после создания переменной и установки в некоторое время True, попробуйте / исключая команды, переменная не возвращает значение.Я пытаюсь глобализировать этот «старт», чтобы его можно было использовать.

def start_time():
    while True:
        try:
            starting = int(input("Please enter a starting hour(HH): "))
            if starting < 0:
                print("There are no negative hours!")
            elif starting > 24:
                print("There are only 24 hours in a day!")
            else:
                break
        except ValueError:
            print("Please enter in a correct format (HH)")
    return starting
def end_time():
    while True:
        try:
            ending = int(input("Please enter an ending hour (HH): "))
            if ending < starting:
                print("You can only plan a day!")
            elif ending < 0:
                print("There are only 24 hours in a day!")
            elif ending > 24:
                print("There are only 24 hours in a day!")
            else:
                break
        except ValueError:
            print("Please enter in a correct format (HH)")
    return ending

#obtain starting and ending time
start_time()
end_time()

#confirm starting and ending time

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Вместо того, чтобы делать starting глобальным, вернуть starting значение вызывающей стороне.По возможности следует избегать использования глобальных.Прочитайте, почему это плохой дизайн здесь .Чтобы реализовать лучше, ваш вызывающий должен быть изменен как:

starting = start_time()

Теперь время начала получается в starting.

Аналогично,

ending = end_time()

Окончаниевремя получается в ending.

Также pass не вырывается из бесконечного цикла while.Он ничего не делает, но используется, когда синтаксически требуется оператор, но программа не требует никаких действий.Используйте break вместо pass.Он выходит из внутреннего цикла.

Читайте об использовании break здесь .

0 голосов
/ 28 мая 2018

Правильно, одна поправка необходима для достижения вашей заявленной цели:

заменить:

start_time()

на

starting = start_time()

при вызове функции, которая возвращаетзначение без явного места для того значения, которое будет применено python, выбрасывает значение.

...