Python为true时,Try/Except返回值

Python为true时,Try/Except返回值,python,while-loop,return,global,try-except,Python,While Loop,Return,Global,Try Except,当我在创建变量并将while设置为True之后尝试返回值时,try/except命令,变量不会返回值。我正在尝试全球化这个“起点”,以便它可以被使用 def start_time(): while True: try: starting = int(input("Please enter a starting hour(HH): ")) if starting < 0: print("T

当我在创建变量并将while设置为True之后尝试返回值时,try/except命令,变量不会返回值。我正在尝试全球化这个“起点”,以便它可以被使用

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
def start_time():
尽管如此:
尝试:
起始=整数(输入(“请输入起始小时):”)
如果启动<0:
打印(“没有负小时!”)
elif启动>24:
打印(“一天只有24小时!”)
其他:
打破
除值错误外:
打印(“请输入正确格式(HH)”)
回程起动
def end_time():
尽管如此:
尝试:
ending=int(输入(“请输入结束小时(HH):”)
如果结束<开始:
打印(“您只能计划一天!”)
elif结束<0:
打印(“一天只有24小时!”)
elif结束>24:
打印(“一天只有24小时!”)
其他:
打破
除值错误外:
打印(“请输入正确格式(HH)”)
返回结束
#获取开始和结束时间
开始时间()
结束时间()
#确认开始和结束时间

谢谢

好的,为了实现您的既定目标,需要进行一次修改:

替换:

start_time()


调用一个函数时,如果该函数返回的值没有明确的放置位置,python将丢弃该值。

starting
设置为全局,而将
starting
值返回给调用方。如有可能,应避免使用global。阅读为什么这是一个糟糕的设计。为了更好地实现,您的调用者应修改为:

starting = start_time()
现在在
启动
中获得启动时间

同样地

ending = end_time()
结束时间在
结束
中获得

而且
pass
不会在
循环时中断无限
。它不执行任何操作,但在语法上需要语句但程序不需要操作时使用。使用
中断
代替
通过
。它退出最里面的循环


阅读
break

的用法,当输入正确时,您永远不会中断while循环。将
pass
替换为
break
(或提前返回)。还有一件事:您需要将if语句的else分支上的pass更改为break,或者更有效地将return语句放在那里,否则您将永远无法退出无限循环!
ending = end_time()