python学习:程序控制结构·作业20141219,python20141219,Python学习:程


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=0foriinrange(0,n):ifi%3==0ori%5==0:sum+=ielse:printsum



2.编写程序,完成下列题目(1分)

题目内容:

10以内的素数2,3,5,7的和为17。要求计算得出任意正整数n以内的所有素数的和。


输入格式:

一个正整数n。


输出格式:

n以内的所有素数的和。


输入样例:

10


输出样例:

17

时间限制:500ms内存限制:32000kb


importmathn=int(raw_input())sum=0fortmpinxrange(2,n):foriinxrange(2,int(math.sqrt(tmp)+1)):iftmp%i==0:breakelse:sum+=tmpprintsum



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=0weekday=1year=1900count=0num=0ifyear%4==0andyear%100!=0oryear%400==0:days=366else:days=365weekday+=days%7foryearinrange(1901,2001):formonthinrange(1,13):ifmonthin[1,3,5,7,8,10,12]:days=31weekday+=daysifweekday%7==0:count+=1elifmonthin[4,6,9,11]:days=30weekday+=daysifweekday%7==0:count+=1elifyear%4==0andyear%100!=0oryear%400==0:days=29weekday+=daysifweekday%7==0:count+=1else:days=28weekday+=daysifweekday%7==0:count+=1printcount


2.)做完作业后看到网友比较高级的答案:

count=0year=1901month=[31,28,31,30,31,30,31,31,30,31,30,31]day=1+365%7whileyear<2001:if(year%4==0andyear%100!=0)oryear%400==0:month[1]=29else:month[1]=28formoninrange(12):day+=month[mon]day=day%7#print(day,mon)ifday==0:count+=1year+=1print(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


importmathcount=0n=int(raw_input())shuzi=0ifn>=2:forshuziinrange(2,n+1):#shuzi=197foryinziinrange(2,int(math.sqrt(shuzi)+1)):ifshuzi%yinzi==0:#print‘break:‘,shuzi,yinzibreakelse:sushu=shuzi#printsushusushu_tmp=sushuweishu=0whilesushu_tmp!=0:weishu+=1sushu_tmp/=10#print‘weishu:‘,weishuifweishu==1:count+=1elifweishu>=2:#printsushui=1whilei<weishu:shuzi_xunhuan=int(sushu/(10**i)+(sushu%(10**i))*(10**(weishu-i)))i+=1foryinzi2inrange(2,int(math.sqrt(shuzi_xunhuan)+1)):ifshuzi_xunhuan%yinzi2==0:i=weishu+1breakifi==weishu:count+=1printcount




本文出自 “运维者说:从菜鸟到老鸟” 博客,请务必保留此出处http://liuqunying.blog.51cto.com/3984207/1591886

python学习:程序控制结构·作业20141219

评论关闭