如何在 Python 函数 return 布尔值中使用 try-except?
How to use try-except in Python function return boolean?
我需要使用 try-except 来验证日期的输入字符串,time.The 输入格式应该是 MM/DD/YYYY HH:MM:SS。如果验证函数 returns 为假,那么它不是 valid.I 尝试了无效输入,而是 try-except 没有按预期工作。未打印错误消息。我的代码有什么问题?如何解决?谢谢
def validate_user_input(input_string):
# check the input validation
validation = True
if input_string[2] != "/" or input_string[5] != "/":
validation = False
elif int(date) > 31 or int(date) < 1:
validation = False
elif int(month) > 12 or int(month) < 1:
validation = False
elif int(hour) < 0 or int(hour) > 24:
validation = False
elif int(minute) < 0 or int(minute) > 59:
validation = False
elif int(second) < 0 or int(second) > 59:
validation = False
return validation
input = input("Please input a date and time within the format of MM/DD/YYYY HH:MM:SS")
# get the information from the input
year = input[6:10]
month = input[0:2]
date = input[3:5]
hour = input[11:13]
minute = input[14:16]
second = input[17:19]
# try-except
try:
validate_user_input(input) == False
print("Your input is valid!")
except:
print("Error: the input date and time is invalid!")
except
只会在抛出一个异常而未被更早的 try-except
捕获时捕获异常。您没有在代码中 raise
ing 任何内容,因此 except
块永远不会 运行。当 validate_user_input
函数 returns False
:
时,您应该抛出错误,也许是 ValueError
try:
if not validate_user_input(input):
raise ValueError("Bad input")
except:
...
改为使用 if 语句。这应该比使用 try 和 except 更简单。
if validate_user_input(input) == False:
print("Your input is valid!")
else:
print("Error: the input date and time is invalid!")
# try-except
try:
validate_user_input(input) == False
print("Your input is valid!")
except:
print("Error: the input date and time is invalid!")
您似乎要从输入中验证输入的日期和时间。但是这些代码行没有做任何事情。它不做任何事情就检查条件,@dogman288 回答让它发生。我想建议图书馆调用 python-dateutil。只需几行,您就可以非常轻松地进行验证,我希望这会节省您的时间。只需评论相关输出即可。
from dateutil.parser import parse
from dateutil.parser._parser import ParserError
def validate_user_input(input_string: str):
try:
parse(input_string)
print("Your input is valid!")
except ParserError as error:
print(error)
validate_user_input("12/31/2005 23:59:6") # Your input is valid!
validate_user_input("13/31/2005 23:59:6") # month must be in 1..12: 13/31/2005 23:59:6
validate_user_input("12/32/2005 23:59:6") # day is out of range for month: 12/32/2005 23:59:6
validate_user_input("12/31/200511111 23:59:6") # year 200511111 is out of range: 12/31/200511111 23:59:6
validate_user_input("12/31/2005 24:59:6") # hour must be in 0..23: 12/31/2005 24:59:6
validate_user_input("12/31/2005 23:61:6") # minute must be in 0..59: 12/31/2005 23:61:6
validate_user_input("12/31/2005 23:59:61") # second must be in 0..59: 12/31/2005 23:59:61
validate_user_input("") # String does not contain a date:
validate_user_input("some_string") # Unknown string format: some_string
我需要使用 try-except 来验证日期的输入字符串,time.The 输入格式应该是 MM/DD/YYYY HH:MM:SS。如果验证函数 returns 为假,那么它不是 valid.I 尝试了无效输入,而是 try-except 没有按预期工作。未打印错误消息。我的代码有什么问题?如何解决?谢谢
def validate_user_input(input_string):
# check the input validation
validation = True
if input_string[2] != "/" or input_string[5] != "/":
validation = False
elif int(date) > 31 or int(date) < 1:
validation = False
elif int(month) > 12 or int(month) < 1:
validation = False
elif int(hour) < 0 or int(hour) > 24:
validation = False
elif int(minute) < 0 or int(minute) > 59:
validation = False
elif int(second) < 0 or int(second) > 59:
validation = False
return validation
input = input("Please input a date and time within the format of MM/DD/YYYY HH:MM:SS")
# get the information from the input
year = input[6:10]
month = input[0:2]
date = input[3:5]
hour = input[11:13]
minute = input[14:16]
second = input[17:19]
# try-except
try:
validate_user_input(input) == False
print("Your input is valid!")
except:
print("Error: the input date and time is invalid!")
except
只会在抛出一个异常而未被更早的 try-except
捕获时捕获异常。您没有在代码中 raise
ing 任何内容,因此 except
块永远不会 运行。当 validate_user_input
函数 returns False
:
ValueError
try:
if not validate_user_input(input):
raise ValueError("Bad input")
except:
...
改为使用 if 语句。这应该比使用 try 和 except 更简单。
if validate_user_input(input) == False:
print("Your input is valid!")
else:
print("Error: the input date and time is invalid!")
# try-except
try:
validate_user_input(input) == False
print("Your input is valid!")
except:
print("Error: the input date and time is invalid!")
您似乎要从输入中验证输入的日期和时间。但是这些代码行没有做任何事情。它不做任何事情就检查条件,@dogman288 回答让它发生。我想建议图书馆调用 python-dateutil。只需几行,您就可以非常轻松地进行验证,我希望这会节省您的时间。只需评论相关输出即可。
from dateutil.parser import parse
from dateutil.parser._parser import ParserError
def validate_user_input(input_string: str):
try:
parse(input_string)
print("Your input is valid!")
except ParserError as error:
print(error)
validate_user_input("12/31/2005 23:59:6") # Your input is valid!
validate_user_input("13/31/2005 23:59:6") # month must be in 1..12: 13/31/2005 23:59:6
validate_user_input("12/32/2005 23:59:6") # day is out of range for month: 12/32/2005 23:59:6
validate_user_input("12/31/200511111 23:59:6") # year 200511111 is out of range: 12/31/200511111 23:59:6
validate_user_input("12/31/2005 24:59:6") # hour must be in 0..23: 12/31/2005 24:59:6
validate_user_input("12/31/2005 23:61:6") # minute must be in 0..59: 12/31/2005 23:61:6
validate_user_input("12/31/2005 23:59:61") # second must be in 0..59: 12/31/2005 23:59:61
validate_user_input("") # String does not contain a date:
validate_user_input("some_string") # Unknown string format: some_string