目录
循环
1 基础循环语句
for i in range(5): #[0,5)
print(i)
# 0
# 1
# 2
# 3
# 4
for i in range(5,9): #[5,9)
print(i)
# 5
# 6
# 7
# 8
for i in range(0,10,3): #步长3
print(i)
# 0
# 3
# 6
# 9
for i in range(-10,-100,-30):
print(i)
# -10
# -40
# -70
#遍历列表
a=['a','b','c','d','e']
for i in range(len(a)): #len,求列表(也可用于求字符串,元组,集合,字典元素个数) e.g.print(len("abc"))即输出3
print(i,a[i])
# 0 a
# 1 b
# 2 c
# 3 d
# 4 e
a=['a','b','c','d','e']
for i in a:
print(i)
# a
# b
# c
# d
# e
#遍历字符串
for letter in 'abcde':
print(letter)
# a
# b
# c
# d
# e
2 break & continue
sites = ["a","b","c","d","e"]
for site in sites:
if site == "c":
print("ok")
break
print("site:" + site)
else:
print("no break")
print("done!")
# site:a
# site:b
# ok
# done!
for letter in 'TAOBAO':
if letter == 'O':
continue
print('当前字母:',letter)
# 当前字母: T
# 当前字母: A
# 当前字母: B
# 当前字母: A
#连续输出26个字母 ord(x):求字符x的编码(字符就是长度为1的字符串) chr(x):求编码为x的字符
for i in range(26):
print(chr(ord("a") + i),end="")
#连续输出0-9
for i in range(10):
print(chr(ord("0") + i),end="")
3 while
n = input(input())
x = 1
while x <= n:
if n % x == 0:
print(x," ",end="")
x += 1
while(input("请输入密码:") != "pku"):
print("密码不正确:")
print("密码输入成功!")
#输入三个整数,求它们最小公倍数
s = input().split()
x,y,z = int(s[0]),int(s[1]),int(s[2])
n = 1
while True:
if n % x == 0 and n % y == 0 and n % z == 0: #枚举
print(n)
break
n = n + 1
#改进
s = input().split()
x,y,z = int(s[0]),int(s[1]),int(s[2])
n = m = max(x,y,z)
n = 1
while True:
if n % x == 0 and n % y == 0 and n % z == 0: #枚举
print(n)
break
n = n + m
4 多重循环
#m组数据 每组数据有n个整数 求和
m = int(input())
for i in range(m):
n = int(input())
total = 0
for i in range(n):
total += int(input())
print(total)
#取两个数
# 给定正整数n和m,在1至n这n个数中,取出两个不同的数,使得其和是m的因子,问与多少种不同的取法
total = 0
lst = input().split()
n,m = int(lst[0]),int(lst[1])
for i in range(1,n):
for j in range(i+1,n+1):
if m % (i + j) == 0:
print(i,j)
total += 1
print(total)
例题
#输入n个整数求和 输入n 再输入n行 每行一个数
n = int(input())
total = 0
for i in range(n):
total += int(input())
print(total)
#从小到大输出n的因子
n = int(input())
for x in range(1,n+1):
if n % x == 0:
print(x," ",end="")
#从大到小输出n的因子
n = int(input())
for x in range(n,0,-1):
if n % x == 0:
print(x," ",end="")
#求斐波那契数列的第k项
k = int(input())
if k == 1 or k == 2:
print(1)
else:
a1 = a2 = 1
for i in range(k-2):
a1,a2 = a2,a1+a2
print(a2)
#求阶乘的和
#解法一(该解法的重复操作较多)
n = int(input())
s = 0
for i in range(1,n+1):
f = 1 #存放i的阶乘
for j in range(1,i+1):
f *= j #此操作一共进行1+2+3+……+n次
s += f
print(s)
#解法二(更快)
n = int(input())
s,f = 0,1
for i in range(1,n+1):
f *= i
s += f
print(s)
#输入正整数n(n>=2),求不大于n的全部质数
#解法一(该解法没必要的操作较多:偶数、k大于i的平方根(p*q 其中大的那个会大于i的平方根))
n = int(input())
for i in range(2,n+1):
ok = True
for k in range(2,i):
if i % k == 0:
ok = False
break
if ok:
print(i)
#解法二
n = int(input())
print(2)
for i in range(3,n+1,2):
ok = True
for k in range(3,i,2):
if i % k == 0:
ok = False
break
if k*k > i:
break
if ok:
print(i)
异常处理
#输入若干行,每行若干数,求所有整数的最大数
s = input()
lst = s.split()
maxV = int(lst[0])
try:
while True:
lst = s.split()
for x in lst:
maxV = max(maxV,int(x))
s = input() #输入数据已经没有了还执行input,会产生异常
except:
pass
print(maxV)
try:
n = int(input())
print("hello")
a = 100/n
print(a)
except:
print("error")
print("end")
# 5
# hello
# 20.0
# end
# 0
# hello
# error
# end
# abc
# error
# end