选择结构
-
单分支结构( if 语句)
if 的嵌套
-
多分支结构(elif)
elif= else : if
循环结构
- while循环结构
集体缩进以保证在循环体内(tab) - break&continue
- for 循环语句
循环使用 else 语句
在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。
range函数
range(start, stop[, step])
>>>range(10) # 从 0 开始到 9
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 10
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
1编写程序,完成下列题目(1分)
题目内容:
如果列出10以内自然数中3或5的倍数,则包括3,5,6,9。那么这些数字的和为23。要求计算得出任意正整数n以内中3或5的倍数的自然数之和。
输入格式:
一个正整数n。
输出格式:
n以内中3或5的倍数的自然数之和。
输入样例:
10
输出样例:
23
n=int(input())
sum=0
for i in range(1,n):
if not(i%3):
sum+=i
elif not(i%5):
sum+=i
print(sum)
2
题目内容:
10以内的素数2,3,5,7的和为17。要求计算得出任意正整数n以内的所有素数的和。
输入格式:
一个正整数n。
输出格式:
n以内的所有素数的和。
输入样例:
10
输出样例:
17
import math
n=int(input())
ans=0
if n>=2:
ans+=2
for i in range(3,n,2):
f=0
for j in range(3,int(math.sqrt(i))+1,2):
if i%j==0:
f=1
break
if f==0:
ans+=i
print(ans)
3
题目内容:
根据下列信息计算在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整除也是闰年
输出格式:
一个正整数
x=2
ans=0
run=0
for year in range(1901,2001):
if (year%4==0 and year%100!=0) or (year%400==0): #判断是否是闰年
run=1
else:
run=0
for month in range(1,13):
if (year==2000) and (month==12):
break
if month==2:
if run==1:
x=(x+1)%7
else:
x=x
elif (month==4) or (month==9) or (month==6) or (month==11):
x=(x+2)%7
else:
x=(x+3)%7
if x==0:
ans+=1
print ans
4
题目内容:
数字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
n=int(input())
ans=0
import math
if n>=2:ans=1
for i in range(3,n,2):
num=i
cnt=0
x=1
while(num):
cnt+=1
num=int(num/10)
x*=10
num=i
for k in range(cnt):
num*=10
num+=int(num/x)
num%=x
if num%2==0:
f=1
break
f=0
for j in range(3,int(math.sqrt(num))+1,2):
if num%j==0:
f=1
break
if f==1:break
if f==0:
ans+=1
# print(i,)
print(ans)