﻿ Python: Display a simple, formatted calendar of a given year and month - w3resource

Python: Display a simple, formatted calendar of a given year and month

Python Datetime: Exercise-48 with Solution

Write a Python program to display a simple, formatted calendar of a given year and month.

Sample Solution:

Python Code:

``````# Import the calendar module
import calendar
# Print a prompt indicating that a calendar for a specific year and month will be printed
print('Print a calendar for a year and month:')
# Prompt the user to input the month and year
month = int(input('Month (mm): '))
year = int(input('Year (yyyy): '))
# Print a new line for formatting purposes
print('\n')

# Set Sunday as the first day of the week
calendar.setfirstweekday(calendar.SUNDAY)
# Generate the month calendar for the specified year and month
cal = calendar.monthcalendar(year, month)

# If the month is single-digit, prepend a '0' to it for consistency
if len(str(month)) == 1:
month = '0%s' % month

# Print the header of the calendar
print('|++++++ %s-%s +++++|' % (month, year))
print('|Su Mo Tu We Th Fr Sa|')
print('|--------------------|')

# Display the calendar
border = '|'
for week in cal:
line = border

# Iterate over each day in the week
for day in week:
# If the day is 0, it's a blank day
if day == 0:
# Print 3 spaces for blank days
line += '   '
# If the day is a single-digit number, prepend a space
elif len(str(day)) == 1:
line += ' %d ' % day
# If the day is a double-digit number, print it directly
else:
line += '%d ' % day
# Remove the extra space in the last column
line = line[0:len(line) - 1]
line += border
# Print the line
print(line)

# Print the bottom border of the calendar
print('|--------------------|\n')
```
```

Output:

```Print a calendar for a year and month:
Month (mm): 05
Year (yyyy): 2017

|++++++ 05-2017 +++++|
|Su Mo Tu We Th Fr Sa|
|--------------------|
|    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         |
|--------------------|
```

Explanation:

In the exercise above,

• The code imports the "calendar" module.
• It prints a prompt indicating that a calendar for a specific year and month will be printed.
• It prompts the user to input the month and year.
• It prints a new line for formatting purposes.
• It sets Sunday as the first day of the week.
• It generates the month calendar for the specified year and month.
• If the month is a single-digit number, it prepends a '0' to it for consistency.
• It prints the header of the calendar.
• It iterates over each week in the calendar, constructing a string representation of each week.
• Within each week, it iterates over each day, formatting each day according to its value (blank, single-digit, or double-digit).
• It removes the extra space in the last column of each line.
• It prints the constructed line.
• It prints the bottom border of the calendar.

Flowchart:

Python Code Editor: