无法使创建的python函数返回一个值,然后我可以在另一个计算中使用



我定义了一个函数,询问你一天中什么时候开始工作,以及一个函数询问你什么时候结束工作。我现在正试图定义一个函数来计算它们之间的时间差,而我遇到的问题实际上是使用调用启动/完成函数的结果。

我很难理解如何使函数返回我想要的值,即当我调用函数并添加Monday参数时,从而询问具体在星期一开始工作的时间。我不知道如何获得类似"10:00"的结果,所以我可以在另一个函数中使用结果返回。

此外,我写这段代码的时间越长,就越不知道如何区分日子。在中,我创建了一个函数,询问你什么时候开始,然后我将其与另一个函数相结合,该函数基本上在一周中的几天内循环。我意识到我不知道如何将周一的ask_start_time函数与周四的ask_start_time函数分开。

我得到的错误是:

What time did you start on Monday?10:00
Traceback (most recent call last):
File "C:/Users/MM/PycharmProjects/pythonProject2/test.py", line 49, in <module>
start_datetime = datetime.datetime.strptime(mon, '%H:%M')
TypeError: strptime() argument 1 must be str, not None

代码:

for a in range(attempts):
start = input(f'What time did you start on {day_name}?')
validation = re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", start)
if validation:
break
print('Please use a HH:MM format only.')
else:
print('25 wrong attempts and you still don't understand that it's HH:MM?!')
def ask_finish_time(day_name, attempts=25):
for a in range(attempts):
finish = input(f'What time did you finish on {day_name}?')
validation = re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", finish)
if validation:
break
print('Please use a HH:MM format only.')
def days():
work_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
start_times = {day: ask_start_time for day in work_days}
print(start_times)
def time_diff(a, b):
return b - a
ask_start_time('Monday')
start_datetime = datetime.datetime.strptime(ask_start_time, '%H:%M')
ask_finish_time('Monday')
finish_datetime = datetime.datetime.strptime(ask_finish_time, '%H:%M')
print(time_diff(start_datetime, finish_datetime))
def ask_start_time(day_name, attempts=25):
for a in range(attempts):
start = input(f'What time did you start on {day_name}?')
validation = re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", start)
if validation:
return start
print('Please use a HH:MM format only.')
else:
print('25 wrong attempts and you still don't understand that it's HH:MM?!')
def ask_finish_time(day_name, attempts=25):
for a in range(attempts):
finish = input(f'What time did you finish on {day_name}?')
validation = re.match("^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$", finish)
if validation:
return finish
print('Please use a HH:MM format only.')
def days():
work_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
start_times = {day: ask_start_time for day in work_days}
print(start_times)
def time_diff(a, b):
return b - a
start = ask_start_time('Monday')
start_datetime = datetime.datetime.strptime(start, '%H:%M')
finish = ask_finish_time('Monday')
finish_datetime = datetime.datetime.strptime(finish, '%H:%M')
print(time_diff(start_datetime, finish_datetime))

问题是ask_start_timeask_finish_time不返回任何结果,或者None。从这些函数返回解析的时间,您的代码就可以工作了。

def ask_start/end_time(...):
...
return start/finish

相关内容