聪明办法学python第6次笔记

打卡链接

登录 - HydroOJicon-default.png?t=O83Ahttps://hydro.ac/d/datawhale_p2s/user/63061 

目录

Chapter 5 循环 Loop

for 循环和循环范围

range(x, y) 是左闭右开区间,包含 x,不包含 y

反转

python原生的for循环非常慢,多层for循环尽量不用python写,效率慢

while 循环

**Bad Style**:在知道循环范围的情况下使用 `while`

break 与 continue 语句

_在python中是一个黑洞,什么都可以装,不会变成任何一个变量

假死循环

剪枝

总结


Chapter 5 循环 Loop

for 循环和循环范围

range(x, y) 是左闭右开区间,包含 x,不包含 y

如果想让右边也闭上的话,y+1

def sumFromMToN(m, n):
    total = 0
    # 注意: range(x, y) 是左闭右开区间,包含 x,不包含 y
    for x in range(m, n+1):
        total += x
    return total

total += x # total = total + x

def sumFromMToN(m, n):
    return sum(range(m, n+1))

range()是生成一个数列

 当只有一个数时,range 起始范围默认为 0 # range(0, n)

 第三个参数为 “步长” step

反转

for i in reversed(range(0,10,1)):
    print(i)

python原生的for循环非常慢,多层for循环尽量不用python写,效率慢

while 循环

举个例子:依次找出 n 个 4 或者 7 的整数倍非负整数

def isMultipleOf4or7(x):
    return ((x % 4) == 0) or ((x % 7) == 0)

def nthMultipleOf4or7(n):
    found = 0
    guess = -1
    while found <= n:
        guess += 1
        if isMultipleOf4or7(guess):
            found += 1
    return guess

**Bad Style**:在知道循环范围的情况下使用 `while`

break 与 continue 语句

for n in range(200):
    if n % 3 == 0:
        continue # 跳过这次循环
    elif n == 8:
        break # 跳出当前整个循环
    else:
        pass # 啥也不做,占位符(不会被运行)
    print(n, end=" ")

_在python中是一个黑洞,什么都可以装,不会变成任何一个变量

for _ in range(5):

假死循环

与环境交互后,在特定条件下终止的循环

判断一个数是不是质数

# 不是最快的写法,但最容易理解

def isPrime(n):
    if n < 2:
        return False
    for factor in range(2,n):
        if n % factor == 0:
            return False
    return True
for n in range(100):
    if isPrime(n):
        print(n, end=" ")

剪枝

不用暴力循环

先把偶数排除掉,算最大因子

# 快了一点

def fasterIsPrime(n):
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    maxFactor = round(n**0.5)
    for factor in range(3, maxFactor+1, 2):
        if n % factor == 0:
            return False
    return True

《人工智能》第4版 如果一个模型运算快,结果错,没有意义

总结

 For 循环用于指定范围的重复操作。

 `range()` 可以生成一个数字范围。

 在不知道循环什么时间停止的时候,应该试试 While 循环。

 循环同样也是可以嵌套的。

 巧妙地使用 `break` 和 `continue` 语句。

 合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值