Python日历日期缺少空格

时间:2017-12-16 13:04:45

标签: python list calendar whitespace

我遇到了这个程序并在此修复了一部分,但我遇到了另一个问题。当它打印出月份时,日期不在正确的位置,它缺少一个空格。我需要在一周的最后一个字母下面找到一位数字的日期。例如,“r”字母下的数字1而不是“F”字母。谢谢你的帮助。

calendar1 = [('January', range(1, 31 + 1)),
            ('Feburary', range(1, 28 + 1)),
            ('March', range(1, 31 + 1)),
            ('April', range(1, 30 + 1)),
            ('May', range(1, 31 + 1)),
            ('June', range(1, 30 + 1)),
            ('July', range(1, 31 + 1)),
            ('August', range(1, 31 + 1)),
            ('September', range(1, 30 + 1)),
            ('October', range(1, 31 + 1)),
            ('November', range(1, 30 + 1)),
            ('December', range(1, 31 + 1))]

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

def make_calendar(year, start_day):

    # Determine current starting position on calendar
    start_pos = week.index(start_day)

    for month, days in calendar1:
        # Print month title
        print('{0} {1}'.format(month, year).center(20, ' '))
        # Print Day headings
        print(' '.join(['{0:<2}'.format(w) for w in week]))
        # Add spacing for non-zero starting position
        print('{0:<3}'.format('')*start_pos, end='')

        for day in days:
            # Print day
            print('{0:<3}'.format(day), end='')
            start_pos += 1
            if start_pos == 7:
                # If start_pos == 7 (Sunday) start new line
                print()
                start_pos = 0 # Reset counter
        print('\n')

yr=int(input('Enter Year'))
strtday=input('Enter start day of the year Mo,Tu,We,Th,Fr,Sa,Su')
make_calendar(yr,strtday)

1 个答案:

答案 0 :(得分:1)

改变这个:

    print('{0:<3}'.format(day), end='')

到此:

    print('{0:>2} '.format(day), end='')

请注意格式字符串中右括号后面有一个空格。

您的原始代码在&#34;打印day左对齐的3个字符字段&#34;。新代码说&#34;打印day在2个字符的字段中右对齐,然后打印空格&#34;。