找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 5823|回复: 2

[求助] 我的代码错在哪里了?

2

主题

5

帖子

5

积分

贫民

积分
5
数学大亨 发表于 2017-5-6 12:14:54 | 显示全部楼层 |阅读模式
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): ...
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
CastleChen 发表于 2017-5-6 12:14:55 | 显示全部楼层
错误是每月日历输出第一行的前导空格打印放在了日期输出的循环内,修改为:

    # 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):
        # 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()

点评

谢大神指点迷津,终于解决了困惑我很久的问题。多谢。  发表于 2017-5-8 11:55
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表