繁体   English   中英

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

[英]Can't make created python function return a value which I can then use in another calculation

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

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

此外,我越深入编写此代码,我就越对如何区分日子感到困惑。 例如,我创建了一个 function,它询问你什么时候开始,然后我将它与另一个 function 结合起来,它基本上在一周中的几天循环。 我意识到我不知道如何将星期一的ask_start_time function 与星期四的ask_start_time function 分开。

我得到的错误是:

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什么都不返回,或者没有返回。 从这些函数返回解析的时间,您的代码将起作用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM