如何在Python中写一个函数来打印一个月的一周?

问题描述 投票:0回答:1

给定一个周号,(1st,2nd,...),本月1号所在的日子(1代表周一,2代表周二,...),以及本月的天数:返回一个字符串,由该周中每一天的月日组成,从周一开始,到周日结束。周数代表月份中的周数。

我做了以下函数:我的这些函数的代码如下。

import datetime
from datetime import datetime
import calendar
from datetime import date

def week(week_num, start_day, days_in_month):
    week_string = ""

    if week_num == 1:
        if start_day == 1:
            week_string = "1 2 3 4 5 6 7"
        elif start_day == 2: 
            week_string = "  1 2 3 4 5 6"
        elif start_day == 3:
            week_string = "    1 2 3 4 5"
        elif start_day == 4:
            week_string = "      1 2 3 4"
        elif start_day == 5:
            week_string = "        1 2 3"
        elif start_day == 6:
            week_string = "          1 2"
        elif start_day == 7:
            week_string = "            1"

    elif week_num == 2:
        if start_day == 1:
            week_string = "8 9 10 11 12 13 14"
        elif start_day == 2: 
            week_string = "7 8 9 10 11 12 13"
        elif start_day == 3:
            week_string = "6 7 8 9 10 11 12"
        elif start_day == 4:
        #carry on in the above way, but this doesn't seem efficient

    return week_string

def main():
    month_name = input("Enter month:\n")
    year = eval(input("Enter year:\n"))


if __name__=='__main__':
    main()

有没有人有什么想法,如何做这个函数?我需要返回一个字符串值

我有另一个想法。

def week(week_num, start_day, days_in_month):
    week_string = ""
    if week_num == 1:
        week_string = ""
        day = start_day

        for i in range(1, 8 -start_day+1):
            week_string = week_string + str(i) + " "
        week_string = "{0:<20}".format(week_string)
    return week_string

一个关于这个函数的输入和输出的例子:

week(1, 3, 30)

返回字符串

' 1 2 3 4 5'
week(2, 3, 30)

返回字符串

' 6 7 8 9 10 11 12’

整个日历应该是这样的。

Mo Tu We Th Fr Sa Su
      1  2  3  4  5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

这是2020年4月的日历

还规定了以下内容。

week(week_num, start_day, days_in_month)

给定一个星期号(1号,2号,......),每月1号所在的日子(1代表星期一,2代表星期二,......),以及该月的天数,返回一个由该星期每一天的月份日期组成的字符串,从星期一开始,到星期日结束。

main()

从用户那里获得一个月和一个年的名称,然后通过获得周数,再获得每个周的周数字符串来打印该月的日历。

python string function calendar week-number
1个回答
0
投票

你可以迭代月中的所有日子,并按周打印。

DAYS = ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']

def week(start_day, days_in_month):

    print(' '.join(DAYS))
    w = ['  ' for i in range(start_day-1)]
    for day in range(1, days_in_month+1):
        w.append(f'{day}' if day > 9 else f'{day} ')
        if len(w) == 7:
            print(' '.join(w))
            w = []
    print(' '.join(w))

测试:

>>>week(1, 30)
Mo Tu We Th Fr Sa Su
1  2  3  4  5  6  7 
8  9  10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

>>>week(6, 31)
Mo Tu We Th Fr Sa Su
               1  2 
3  4  5  6  7  8  9 
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
© www.soinside.com 2019 - 2024. All rights reserved.