第二次交作业了,很是惭愧,过了这么久,总是被各种琐事耽误,努力吧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输出完全数编程_python def「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/66652.html