<p>首先,设置<code>time.sleep(5)</code>比在<code>time.sleep(1)</code>上循环5次更容易。最好有一个包含月份天数的值列表,而不仅仅是长月份和短月份的两个列表。另外,您的<code>while</code>循环当前是不确定的,这是有意的吗?你知道吗</p>
<p>不管怎样,你的主要问题是比较<code>day > 31</code>,但是还有很多地方可以改进。正如我所说,我去掉了<code>oneDay</code>的用法,只做<code>sleep(5)</code>,因为它更干净,并且有一个<code>daysInMonths</code>列表。你知道吗</p>
<pre><code>import time
def showDate():
year = 00
month = 1
day = 1
daysInMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
</code></pre>
<p>现在您只需一次<code>if</code>检查一天是否已到月末,如下所示:</p>
<pre><code> while True:
time.sleep(5)
if day < daysInMonths[month-1]:
day += 1
</code></pre>
<p>这将检查当前月份列表的索引。它使用<code>-1</code>,因为列表从索引0开始,月份从1开始。(即,月份从1到12,但列表的索引是0到11)。我还使用了<code>+=</code>操作符,它基本上是<code>var = var + something</code>的缩写。它的工作原理是一样的,看起来更整洁。你知道吗</p>
<p>此测试包含所有月份,然后另一种情况是您需要增加月份。我建议您首先检查月份是否为12,然后从那里开始递增年份。此外,还应该将<code>day</code>和<code>month</code>设置回1,因为这是它们的起始值。如果不是年底,增加月份并将day设置回1。你知道吗</p>
<pre><code> else:
if month == 12:
year += 1
day = 1
month = 1
else:
month += 1
day = 1
print("{}/{}/{}".format(day, month, year))
</code></pre>
<p>我还使用了<code>string.format</code>语法来保持整洁。使用<code>format</code>,它将用您传入的变量替换字符串中的<code>{}</code>。它可以更容易地规划字符串的实际外观,并隐式地将变量转换为字符串格式。你知道吗</p>