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 的用法。
当我尝试 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 的用法。