假设我制作了一个程序来跟踪我工作的日子和工作时间,我会使用字典吗?我如何区分第1周的星期一和第2周的星期一?关闭程序后如何让它存储此信息? (Python语言)
答案 0 :(得分:0)
我可能会为每周或付费期创建一个时间表对象。每个时间表对象可能包含一组天数,包括工作小时数或时钟输入和输出时间。
对于网站的持久存储,我会使用像mysql这样的数据库。对于在一台机器上运行的应用程序,我可能会使用pickle或平面文件系统。
答案 1 :(得分:0)
字典是在程序运行时存储数据的好方法。
有许多方法可以添加一些数据持久性(因此在关闭程序后它就会出现)。 Python模块pickle和shelve非常有用且易于使用。这些问题的一个问题是您无法轻松检查Python程序之外的数据。还有用于以JSON和XML格式读取和写入文本文件的模块,并且JSON在文本编辑器中特别容易阅读。如果您还不熟练,像MySQL这样的数据库比您提到的个人程序所需的更多,除非您想花一些时间学习如何使用它们,否则您应该采用更简单的解决方案。
至于第1周的周一与第2周,你有很多选择。您可以使用实际日期(这对我来说似乎是一个好主意),或者您可以使用元组键入字典,例如(“Monday”,1)。主要规则是字典键必须是不可变的(整数,字符串,元组 - 只包含不可变对象等),但不是(字典,列表等)。
答案 2 :(得分:0)
在设计此应用程序供我自己使用时,我采取了相反的方法。
根据我的经验,计时应用程序的最大问题是数据输入。所以我决定让我的应用程序使用最简单,最灵活的数据输入工具:文本编辑器。我在一个文本文件中记录笔记并将计时条目混合在一起,所以摘录如下:
Monday 5/10/09
release script ok this week
open a case on the whole code-table-foreign-key thing
- CUS1 2.0 Generate and release version 1.0.45.
need to get dma to spec out the RESPRB configuration, see case 810
MH section complete - one to go!
- CUS2 4.0 Configure and test Mental Health section.
Tuesday 5/11/09
... and so on
我始终以正确的标题开始每一天,并且您可以看到实际计时条目的格式非常简单。一个简单的扫描仪和状态机就是提取数据所需要的 - 基本上,我只是寻找以工作日或连字符开头的行,而忽略其他所有行。
因此,在解析notes文件时程序不会太慢,我每年都会创建一个新的notes文件。 (即使在12月底,解析过程也不会超过1/16秒。)
如果我必须处理数百个人的计时条目,我不会这样做,因为用户必须有一点线索,解析时间会在一段时间后开始累加。另一方面,将这些数据保存在人类可读的文本文件中,我可以存储其他内容(并保持版本控制,差异等),这非常有用。