|
1威望
题目:编写程序提示用户输入年份以及该年的第一天是星期几,然后在控制台上显示该年的日历。日历输出格式类似于命令cal的输出。
错误描述:下述代码输出格式有误,但是每月起始日的星期几是正确的。估计问题来自79行到最后。请大神指教。
代码:
year = eval(input("year = "))
numDayDate = eval(input("The first day of the year is "))
count = numDayDate - 1
for numMonth in range(1, 13):
# map numMonth to nameMonth and define the numMonthDay
if numMonth == 1:
nameMonth = "January"
numMonthDay = 31
elif numMonth == 2:
nameMonth = "Febrary"
# check if the year is a leap year
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
numMonthDay = 29
else:
numMonthDay = 28
elif numMonth == 3:
nameMonth = "March"
numMonthDay = 31
elif numMonth == 4:
nameMonth = "April"
numMonthDay = 30
elif numMonth == 5:
nameMonth = "May"
numMonthDay = 31
elif numMonth == 6:
nameMonth = "June"
numMonthDay = 30
elif numMonth == 7:
nameMonth = "July"
numMonthDay = 31
elif numMonth == 8:
nameMonth = "August"
numMonthDay = 31
elif numMonth == 9:
nameMonth = "September"
numMonthDay = 30
elif numMonth == 10:
nameMonth = "October"
numMonthDay = 31
elif numMonth == 11:
nameMonth = "November"
numMonthDay = 30
elif numMonth == 12:
nameMonth = "December"
numMonthDay = 31
# Calculate the numDayDate for the 1st day of each month
numDayDate = count % 7
count = count + numMonthDay
# map numDayDate to nameDayDate
if numDayDate == 0:
nameDayDate = "Monday"
numblank = 1
elif numDayDate == 1:
nameDayDate = "Tuesday"
numblank = 2
elif numDayDate == 2:
nameDayDate = "Wednesday"
numblank = 3
elif numDayDate == 3:
nameDayDate = "Thursday"
numblank = 4
elif numDayDate == 4:
nameDayDate = "Friday"
numblank = 5
elif numDayDate == 5:
nameDayDate = "Saturday"
numblank = 6
elif numDayDate == 6:
nameDayDate = "Sunday"
numblank = 0
# print the result
breakcount = 0
breakcount = numblank
print(format(nameMonth + " " + str(year), "^42s"))
print(" Sun" + " Mon" + " Tue" + " Wed" + " Thu" + " Fri" + " Sat")
for numSymbol in range(1, numMonthDay + 1):
for temp1 in range(0, numblank):
print(format(" ", ">6s"), end = "")
print(format(str(numSymbol), ">6s"), end = "")
breakcount = breakcount + 1
if breakcount % 7 == 0:
print()
print()
|
最佳答案
查看完整内容
错误是每月日历输出第一行的前导空格打印放在了日期输出的循环内,修改为:
# print the result
breakcount = 0
breakcount = numblank
print(format(nameMonth + " " + str(year), "^42s"))
print(" Sun" + " Mon" + " Tue" + " Wed" + " Thu" + " Fri" + " Sat")
for temp1 in range(0, numblank):
print(format(" ", ">6s"), end = "")
for numSymbol in range(1, numMonthDay + 1):
...
|