作业一:求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'',语句。