python学习:程序控制结构·作业20141219
Python学习:程序控制结构 20141219
编程环境:
windows 7 x64
python 2.7.6
题目:
1 编写程序,完成下列题目(1分)
题目内容:
如果列出10以内自然数中3或5的倍数,则包括3,5,6,9。那么这些数字的和为23。要求计算得出任意正整数n以内中3或5的倍数的自然数之和。
输入格式:
一个正整数n。
输出格式:
n以内中3或5的倍数的自然数之和。
输入样例:
10
输出样例:
23
时间限制:500ms内存限制:32000kb
n = int(raw_input()) sum = 0 for i in range(0, n): if i % 3 == 0 or i % 5 == 0: sum += i else: print sum
2.编写程序,完成下列题目(1分)
题目内容:
10以内的素数2,3,5,7的和为17。要求计算得出任意正整数n以内的所有素数的和。
输入格式:
一个正整数n。
输出格式:
n以内的所有素数的和。
输入样例:
10
输出样例:
17
时间限制:500ms内存限制:32000kb
import math n = int(raw_input()) sum = 0 for tmp in xrange(2, n): for i in xrange(2, int(math.sqrt(tmp)+ 1) ): if tmp % i == 0 : break else: sum += tmp print sum
3 编写程序,完成下列题目(1分)
题目内容:
根据下列信息计算在1901年1月1日至2000年12月31日间共有多少个星期天落在每月的第一天上?
a) 1900.1.1是星期一
b) 1月,3月,5月,7月,8月,10月和12月是31天
c) 4月,6月,9月和11月是30天
d) 2月是28天,在闰年是29天
e) 公元年数能被4整除且又不能被100整除是闰年
f) 能直接被400整除也是闰年
输出格式:
一个正整数
时间限制:500ms内存限制:32000kb
1).自己摸索出来的:
days = 0 weekday = 1 year = 1900 count = 0 num = 0 if year % 4 == 0 and year % 100 != 0 or year % 400 == 0: days = 366 else: days = 365 weekday += days % 7 for year in range(1901,2001): for month in range(1,13): if month in [1,3,5,7,8,10,12]: days = 31 weekday += days if weekday % 7 == 0: count += 1 elif month in [4,6,9,11]: days = 30 weekday += days if weekday % 7 == 0: count += 1 elif year % 4 == 0 and year % 100 != 0 or year % 400 == 0: days = 29 weekday += days if weekday % 7 == 0: count += 1 else: days = 28 weekday += days if weekday % 7 == 0: count += 1 print count
2.)做完作业后看到网友比较高级的答案:
count=0 year=1901 month=[31,28,31,30,31,30,31,31,30,31,30,31] day= 1 + 365 %7 while year < 2001: if (year%4==0 and year%100!=0) or year%400==0: month[1]=29 else: month[1]=28 for mon in range(12): day += month[mon] day = day%7 # print(day,mon) if day == 0: count += 1 year += 1 print(count)
4.编写程序,完成下列题目(2分)
题目内容:
数字197可以被称为循环素数,因为197的三个数位循环移位后的数字:197,971,719均为素数。100以内这样的数字包括13个,2,3,5,7,11,13,17,31,37,71,73,79,97。要求任意正整数n以内一共有多少个这样的循环素数。
输入格式:
一个正整数n。
输出格式:
n以内循环素数的数目。
输入样例:
100
输出样例:
13
时间限制:2000ms内存限制:32000kb
import math count = 0 n = int(raw_input()) shuzi = 0 if n >= 2: for shuzi in range(2,n+1): #shuzi = 197 for yinzi in range(2,int(math.sqrt(shuzi) + 1)): if shuzi % yinzi == 0: #print ‘break:‘,shuzi,yinzi break else: sushu = shuzi #print sushu sushu_tmp = sushu weishu = 0 while sushu_tmp != 0: weishu += 1 sushu_tmp /= 10 #print ‘weishu:‘,weishu if weishu == 1: count += 1 elif weishu >= 2: #print sushu i = 1 while i < weishu: shuzi_xunhuan = int(sushu/(10**i)+(sushu %(10**i) )* (10 ** (weishu - i))) i += 1 for yinzi2 in range(2,int(math.sqrt(shuzi_xunhuan) + 1)): if shuzi_xunhuan % yinzi2 == 0 : i = weishu + 1 break if i == weishu: count +=1 print count
本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1591886
for i in xrange(2, int(math.sqrt(tmp) 1) ):
if tmp % i == 0 :
break
else:
sum = tmp
你好,你的else有点看不懂,我的理解它应该和if在同一个for里面呀。但那样写逻辑又不对,不是很理解你写的这个else。能教教我你是怎么想的吗?
我的qq:229312963
谢谢了