美文网首页Python爬虫作业
Python作业2-求完全数及打印万年历

Python作业2-求完全数及打印万年历

作者: Ssop | 来源:发表于2017-06-15 21:45 被阅读0次

第二次交作业了,很是惭愧,过了这么久,总是被各种琐事耽误,努力吧0 0.

一、 求1000以内的完全数有哪些

求1000以内的完全数有哪些
如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,
除去它本身28外,其余5个数相加,1+2+4+7+14=28。

代码如下:

num = 1000

for i in range(1, num + 1):
    total = 0
    for k in range(1, i + 1):
        if k == i:
            break
        elif i % k == 0:
            total += k
        else:
            continue
    if total == i:
        print i,

运行结果:

6 28 496

二 打印万年历

打印万年历的条件:
1)闰年条件:能被4整除且不能被100整除,或者能被400整除
2)1900年1月1日 是周一
注意:这个题不要调用系统函数或库
代码注意封装,一个函数实现一个功能。注意分析实现打印万年历的功能步骤:
判断闰年;
判断当月有多少天;
这个月的1号是从周几开始的;
格式化打印日历。

代码如下:

def isLeap(year):
    if (year%4 ==0 and year%100 != 0) or (year%400 == 0):
        return True
    else:
        return False

def getMonth_days(year,month):
    if month in [1,3,5,7,8,10,12]:
        return 31
    elif month == 2:
        if isLeap(year):
            return 29
        else:
            return 28
    else:
        return 30

#1900年1月1日 是周一
def getWeek_day(curYear,curMonth,curDay):
    days=0
    for year in range(1900,curYear+1):
        if year != curYear:
            for month in range(1,13):
                days += getMonth_days(year,month)
        else:
            for month in range(1,curMonth):
                days += getMonth_days(year, month)
            days += curDay
    return days%7

def printCal(year,month):
    print '      %s  %s'%(month,year)
    print ' 日 一 二 三 四 五 六'
    days = getMonth_days(year,month)
    weekday = getWeek_day(year,month,1)
    n = weekday
    for i in range(1, days + 1):
        if i == 1:
            print '  '*(n+1) + ' ',
        if n == 7:
            print '\n',
            n = 0
        if i < 10:
            print ' %s'%(i),
        else:
            print i,
        n += 1
    return ''

print printCal(2017,6)

运行结果:

      6  2017
 日 一 二 三 四 五 六
             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 
image.png

总结:打印万年历发生了一个问题,在每月的最后一天总会多打一个None,搞了半天才发现是函数printCal没写返回值所以导致每次打印到最后还要再打一个None,添加一个return后即可解决问题.

相关文章

  • Python作业2-求完全数及打印万年历

    第二次交作业了,很是惭愧,过了这么久,总是被各种琐事耽误,努力吧0 0. 一、 求1000以内的完全数有哪些 代码...

  • Python学习小结1

    首先,当然是做作业,由于作业很多是跟着布置的任务来的。 求素数 求1000以内的完全数 编万年历 还有一个很重要的...

  • 002作业

    1,打印三角形 尝试一卒,想用*重复操作符完成作业 自带引号,失败。用的C完成下面作业。 2求完备数 3打印万年历...

  • 20170523python作业

    作业一:求1000以内的完全数有哪些 如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。正...

  • python  求1000以内的完全数

    题目 :求1000以内的完全数(如果一个数恰好等于它的因子之和,则称该数为“完全数”,又称完美数或完备数。例如:第...

  • Python 课程作业 0523 第一题

    求1000以内的完全数有哪些

  • python 打印万年历

    题目:打印万年历 已知条件 闰年条件:能被4整除且不能被100整除,或者能被400整除 1900年1月1日 是周一...

  • Python中的赋值及深浅拷贝

    Python中的赋值及深浅拷贝 赋值 示例 打印 浅拷贝 示例 打印 深拷贝 示例 打印 三层列表演示 示例 打印

  • 2018-05-25

    python 1.python中数组和矩阵乘法及使用总结 对数组的运算 矩阵求逆,转置,求迹

  • 2021-04-08

    4-8 work plan 1-整理季节 天气 文件 打印 手工制作课件 2-清洁教室,规整 3-回复及联系班级群...

网友评论

    本文标题:Python作业2-求完全数及打印万年历

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