【Python】循环与异常处理篇

目录

循环 

1 基础循环语句

2 break & continue

3 while

4 多重循环

例题

异常处理


循环 

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值