20170523python作业

作者: hasu | 来源:发表于2017-05-24 23:46 被阅读35次

    作业一:求1000以内的完全数有哪些

    如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。正如描述所言,要判断一个数是否为完全数,先找出这个数所有的因子,然后比较所有因子之和是否等于此数,若相等,则为完全数。

    #encoding=utf-8
    list=[]     #存储所求得的完全数
    for num in range(2,1000):
        sum=0
        for i in range(1,num):      #寻找num的所有因子
            if num%i==0:
                sum+=i
        if sum==num:    #所有因子之和等于此数加入列表
            list.append(num)
    print list
    

    作业二:打印万年历

    打印万年历的条件:
    1)闰年条件:能被4整除且不能被100整除,或者能被400整除
    2)1900年1月1日 是周一

    注意:这个题不要调用系统函数或库。

    输出样例

    代码注意封装,一个函数实现一个功能。注意分析实现打印万年历的功能步骤:

    判断闰年;
    判断当月有多少天;
    这个月的1号是从周几开始的;
    格式化打印日历。
    
    #encoding=utf-8
    def is_leap_year(year):
        if year%4==0 and year%100!=0 or year%400==0:#闰年条件:能被4整除且不能被100整除,或者能被400整除
            return True
        else:
            return False
    def get_days_of_month(year,month):#获得给定年月对应月份的天数
        if month in (1,3,5,7,8,10,12):
            day=31
        elif month in (4,6,9,11):
            day=30
        elif is_leap_year(year):
            day=29
        else:day=28
        return day
    def get_one_day_week(year,month):#获得给定月1日为星期几
        days=0
        for y in range(1900,year):#以19000101是星期一为基准计算
            if is_leap_year(y):
                days+=366
            else:
                days+=365
        for m in range(1,month):
            days+=get_days_of_month(year,m)
        return days%7+1
    
    year=input("please input year:")
    month=input("please input month:")
    
    print '   ',month,'   ',year,'    '
    print '----------------------------'
    print '  日  一  二  三  四  五  六  '
    

    格式化打印再看一看python的语法规则,然后加以修改


    结果显示


    增加的代码

    year=input("please input year:")
    month=input("please input month:")
    
    print '         ',month,' ',year,'    '
    print '----------------------------'
    print ' 日  一  二  三  四  五  六  '
    i=get_one_day_week(year,month)
    print '',
    print '  '*i,#空出3个空格*i
    for m in range(1,get_days_of_month(year,month)+1):
        print '',
        print '%2d'% m,
        m+=1
        if m%7==0:
            print ' '
    

    需要注意的是: print ''本身就有一个空格了,再在单引号里加个空格就变成两个了print ' '。还有就是print ''默认后面换行,而想要不换行继续在其后边输出则为print'',语句。

    相关文章

      网友评论

        本文标题:20170523python作业

        本文链接:https://www.haomeiwen.com/subject/mykoxxtx.html