Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据当天显示任务1-5_Python_Schedule - Fatal编程技术网

Python 根据当天显示任务1-5

Python 根据当天显示任务1-5,python,schedule,Python,Schedule,我只是一个15岁的孩子,在玩弄python,我对它知之甚少。我希望我的描述足够透彻 因此,我有5个“任务”,根据今天是哪一天,我希望它完成任务 (星期天-任务1,星期一-任务2,…然后在星期五返回到任务1,依此类推) 我将把初始日期定在2012年4月1日星期日 我可以使用以下命令使python显示当前日期: import datetime from time import strftime print strftime("%A, %b %d %Y") 但这就是我自己真正能做的:/ 有人能帮我

我只是一个15岁的孩子,在玩弄python,我对它知之甚少。我希望我的描述足够透彻

因此,我有5个“任务”,根据今天是哪一天,我希望它完成任务

(星期天-任务1,星期一-任务2,…然后在星期五返回到任务1,依此类推)

我将把初始日期定在2012年4月1日星期日

我可以使用以下命令使python显示当前日期:

import datetime
from time import strftime 
print strftime("%A, %b %d %Y")
但这就是我自己真正能做的:/

有人能帮我让它显示“任务”吗?这取决于我打开程序的那天? 我知道一些关于定义事物的知识,如果和while语句和简单的东西有帮助的话。。。谢谢
(如果答案已经出现在其他帖子或其他内容中,请道歉。)

当然。因此,您可以从文档中了解到strftime采用一种格式和可选的第二个参数,即打印时间。时间默认为localtime()。因此,首先:

now = localtime()
print now
localtime()返回一个struct_time对象,该对象记录在以下位置:。您可以看到它包含您想要的信息:它的第六个字段是tm_wday,“范围[0,6],星期一是0。”

现在,您可以索引到任务字典中(无论您如何表示这些任务,我现在假设它们是字符串,但它们可以是函数或其他任何东西)。也许是这样的:

tasks = {
    0: "Stuff to do on Monday.",
    1: "Stuff to do on Tuesday.",
    2: "Stuff to do on Wednesday.",
}

print tasks.get(localtime().tm_wday, "Nothing doing.")
tasks = [ 'Task 1', 'Task 2', 'Task 3', 'Task 4', 'Task 5' ]
print tasks[calendar_day % len(tasks)] # len(tasks) is 5
哇,那是什么

我们使用特殊语法
{}
创建了一个字典,映射为struct_time定义的工作日编号,并将其索引,打印我们找到的任何内容。但是,如果没有找到任何内容,我们将打印“nothing doing”(无所事事)。这在
dict
类的文档中有说明:-get()是一个方法,它接受一个键和一个可选的第二个值,如果找不到该键,这是默认返回的值。如果您在某些天无事可做,但不希望在这些天出现错误,则此选项非常有用

编辑:

好的,我现在明白了,你想从今天开始(2012年4月1日,注意到2012年4月1日是不明确的,因为欧洲人写的日期与美国人不同)。今天你要完成任务1,明天要完成任务2,七天后你就可以完成任务3了

这听起来像是模(余数)运算符的作业,
%
。无论何时,只要您希望基于一组可能更大的整数(例如日历日)循环使用某组整数(例如,您的任务),模运算可能会很有用。在这种情况下,您基本上想要这样的东西:

tasks = {
    0: "Stuff to do on Monday.",
    1: "Stuff to do on Tuesday.",
    2: "Stuff to do on Wednesday.",
}

print tasks.get(localtime().tm_wday, "Nothing doing.")
tasks = [ 'Task 1', 'Task 2', 'Task 3', 'Task 4', 'Task 5' ]
print tasks[calendar_day % len(tasks)] # len(tasks) is 5
只要
calendar\u day
是一个每天递增一的数字,它就会使用模运算将任务索引到任务列表中,这样您就可以从第一个开始,逐步转到最后一个,然后回到第一个,以此类推

如何确定日历日?好吧,我们前面看到的
struct\u time
tm_yday
字段看起来很有用——它是一年中的一天,从1到366(闰年为365)。因此:

今天实际上是第92天,92%5是2,Python使用基于零的索引,因此上面将选择今天的任务3。如果您确实希望今天成为任务1,只需添加适当的固定偏移量:

tasks = [ 'Task 1', 'Task 2', 'Task 3', 'Task 4', 'Task 5' ]
print tasks[(localtime().tm_yday - 2) % len(tasks)]

但是如果你想要完美的结果,你可能会意识到366不能被5平均整除,所以在闰年之后,你会在1月1日的任务列表中看到一个“跳跃”。如果你的任务列表长度不同,那么当年份发生变化时,你可能会更频繁地遇到问题。在实践中,精确地处理时间是一项相当困难的任务,如果您关心这一级别的细节,我想请您就这一特定问题提出一个新问题(并在此处链接到它)。

谢谢,这非常有帮助!唯一的问题是,这些任务不是每天都指定的,因为下周0将不是周一的任务。(也许我是对的,我只是把你的工作解释错了)但这绝对让我进步了!啊,那么你想在7天内轮流完成5项任务?我现在明白了。我很快会在我的答案中添加一些东西。是的!听起来很棒!所有这些pythondoc可能都有我想要的答案,我只是觉得破译“程序员语言”仍然很难做到(到现在为止),你太棒了!我可能会照你说的做,然后再问一个问题,但我以后会担心的。我唯一的问题是在开始日期(2012年4月1日)我如何工作?当我运行你发布的内容时,我得到了“任务3”作为输出,很抱歉,顺便问一下,我要求这么多。我想自己能做更多的事情。我添加了一些东西,所以今天是任务1。它不是超优雅的(你可以通过明确地构建一个2012年4月1日的日期并从那里做数学运算来实现它),但我认为它已经足够满足我们现在的目的了。不要低估使用日期和时间进行编程的难度: