Python 为真时,Try/Except,返回值

Python While true, Try/Except, returning value

当我尝试 return 创建一个变量并放置 while True,try/except 命令后的值时,变量没有 return 值。我正在尝试将此 "starting" 全球化,以便可以使用它。

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

谢谢

对了,需要做一个修正才能达到你的既定目标:

替换:

start_time()

starting = start_time()

当一个函数被调用时 returns 一个没有明确放置该值的位置的值 python 实际上会丢弃该值。

不是使 starting 全局,而是 return starting 值给调用者。如果可能,应避免使用 global。阅读为什么它是一个糟糕的设计 here。为了更好地实施,您的调用者应修改为:

starting = start_time()

现在开始时间在starting

同样,

ending = end_time()

结束时间在ending中获取。

此外 pass 不会跳出无限 while 循环。它什么都不做,但在语法上需要语句但程序不需要任何操作时使用。使用 break 代替 pass。它退出最内层的循环。

了解 break here 的用法。