P2S: Chapter05_循环Loop

https://hydro.ac/d/datawhale_p2s/user/32906

目录

FOR循环

range知识点

FOR循环嵌套

while 循环

break

continue

pass

其他知识点:

剪枝法:缩短循环运行时间

总结

自己的实践

FOR循环

 基于提供范围,重复执行某操作

def sumFromMToN(m,n):
    total = 0
    for x in range(m, n+1):
        total += x    #total即为m到n的累加
    return total

该代码也等价于:

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

range知识点

  1. range(m, n)左闭右开,包括m不包括n,且m与n之间无固定大小关系;

  2.  range可视为一个数列,其实质为生成器;

  3. range(n),省略了第一个参数,则默认起始范围为0;

  4. range(m, n, k),k为步长step,eg.range(5, 20, 7),生成5,12,19;其中k = -1时,range生成器是反着的,相当于reversed()函数。

 简单的for循环可以进行"奇偶数求和"等操作

FOR循环嵌套

Python中 FOR 循环速度很慢,一般不建议在Python中进行多层 FOR 循环嵌套。

def printCoordinates(xMax, yMax):
    for x in range(1, xMax+1):
        for y in range(1, yMax+1):
            print(f"( {x} , {y} )  ", end="") #输出二维坐标
        print()

如果想执行不分次数的代码,可以将 for x in range(n) 中"x"改为下划线"_",即 for _ in range(n)。

while 循环

用于未知次数的循环  # while后是一个表达式

# 确定某个数最左边的数字
def leftmostDigit(n):
    n = abs(n)    # 取绝对值
    while n >= 10:  #若 n >= 10 成立,执行下一行代码;若 n >= 10 为假,执行return
        n = n//10
    return n 

break

跳出当前整个循环

continue

跳过某次循环

pass

作为占位符存在,不会被运行

 它们可以在假·死循环(与环境交互后,在特定条件下终止的循环)中存在。

其他知识点:

剪枝法:缩短循环运行时间

用if条件降低代码运行次数,比如判断某数是否为质数(只能被1和它本身整除)

def isPrime(n):
    if n < 2:
        return False
    for factor in range(2,n):
        if n % factor == 0:
            return False
    return True
# 快了一点

def fasterIsPrime(n):
    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:    #除去2的其他偶数都不是质数
        return False
    maxFactor = round(n**0.5)
    for factor in range(3, maxFactor+1, 2):
        if n % factor == 0:
            return False
    return True

 如图,第二个代码排除了偶数的循环运算,减少了近一半的运算量

总结

- For 循环用于指定范围的重复操作。
- `range()` 可以生成一个数字范围。
- 在不知道循环什么时间停止的时候,应该试试 While 循环。
- 循环同样也是可以嵌套的。
- 巧妙地使用 `break` 和 `continue` 语句。
- 合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率。

自己的实践

  1. range通常与for循环搭配出现,但for循环不仅仅能够与range搭配,它还可以与字符串、元组、列表等连用   #类似包含的关系? 
  2. 对某个数字a,可以通过“ // 10”和“ % 10”得到它的各十百千位数字
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值