为了账号安全,请及时绑定邮箱和手机立即绑定

python循环列表(显示工作日的总30天)

python循环列表(显示工作日的总30天)

慕丝7291255 2022-06-02 15:30:33
list = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]我想显示工作日的总 30 天,有人可以告诉我如何在 for 或 while 循环中做到这一点吗?谢谢我想要的输出是:day 0 : Sunday 1 : Monday 2 : Tueday 3 : Wedday 4 : Thuday 5 : Friday 6 : Satday 7 : Sunday 8 : Monday 9 : Tueday 10 : Wedday 11 : Thuday 12 : Fri......day 30 :我的代码:     a = 0     for i in range(0,30):         print("Day",str(i),list[a])         a += 1错误:    Traceback (most recent call last):    File "tracker.py", line 25, in <module>    print("Day",str(i),weekdays[day_number])    IndexError: list index out of range

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

monthdays = 30

day_index = 6

for i in range(monthdays):

    day_index = (day_index + 1) % 7

    day = weekdays[day_index]

    print("day", i, day)

day_index 为 6,因为您从星期日开始,但您可以更改它。


也不需要调用str(i)inside print,它会为你做。


查看完整回答
反对 回复 2022-06-02
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

您的问题是您尝试打印weekdays[7]时weekdays只有七个元素(即weekdays[0]to weekdays[6])。


有很多方法可以解决这个问题,但在这种情况下,最简单的就是最好的。


在您的循环中,使用weekdays[i % len(weekdays)]而不是weekdays[i].


模 (mod) 运算符在除其参数时找到产生的余数。这会产生循环行为。


n | n % 3 |

--+-------+

0 |   0   |  0 = 0 * 3 + [0]

1 |   1   |  1 = 0 * 3 + [1]

2 |   2   |  2 = 0 * 3 + [2]

3 |   0   |  3 = 1 * 3 + [0]

4 |   1   |  4 = 1 * 3 + [1]

5 |   2   |

6 |   0   |

7 |   1   |

8 |   2   |

9 |   0   |

因此,当您到达超过 长度的some_list索引时,索引i % len(some_list)将循环回 0 并让您继续前进。


查看完整回答
反对 回复 2022-06-02

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号