python chapter 5 循环 Loop

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

一、for 循环和循环范围

for 循环的特点

range() 是个什么东西?

二丶for 循环嵌套

三丶while 循环

四丶break 与 continue 语句

假·死循环

总结


一、for 循环和循环范围

for 循环的特点

基于提供的范围,重复执行特定次数的操作

def sumFromMToN(m, n):

        total = 0 # 注意: range(x, y) 是左闭右开区间,包含 x,不包含 y

        for x in range(m, n+1):

                total += x

        return total

sumFromMToN(5, 10)

45

sumFromMToN(5, 10) == 5+6+7+8+9+10

True

range() 是个什么东西?

range函数返回一个range类型的整数序列,一般用在循环结构中

语法:range(start, stop, step)

返回值

range函数返回一个range对象实例。实例包含了计数的起始位置、终点位置和步长等信息。

 

其实在这里,我们也可以不用循环来完成同样的任务

def sumFromMToN(m, n):

        return sum(range(m, n+1))

sumFromMToN(5, 10)

45

如果我们省略第一个参数会发生什么?

def sumToN(n):

        total = 0

        # range 起始范围默认为 0

        for x in range(n+1):

                total += x

        return total

sumToN(5)

15

那如果我们添加第三个参数呢?

def sumEveryKthFromMToN(m, n, k):

        total = 0 # 第三个参数为 “步长” step

        for x in range(m, n+1, k):

                total += x

        return total

sumEveryKthFromMToN(5, 20, 7) == (5 + 12 + 19)

True

只对从 m 到 n 的 奇数求和

def sumOfOddsFromMToN(m, n):

        total = 0

        for x in range(m, n+1):

                if x % 2 == 1:

                        total += x

        return total

sumOfOddsFromMToN(4, 10) == sumOfOddsFromMToN(5,9) == (5+7+9)

True

二丶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()          #每一行循环结束,利用print()默认参数end换行

printCoordinates(5, 5)

( 1 , 1 )  ( 1 , 2 )  ( 1 , 3 )  ( 1 , 4 )  ( 1 , 5 )  
( 2 , 1 )  ( 2 , 2 )  ( 2 , 3 )  ( 2 , 4 )  ( 2 , 5 )  
( 3 , 1 )  ( 3 , 2 )  ( 3 , 3 )  ( 3 , 4 )  ( 3 , 5 )  
( 4 , 1 )  ( 4 , 2 )  ( 4 , 3 )  ( 4 , 4 )  ( 4 , 5 )  
( 5 , 1 )  ( 5 , 2 )  ( 5 , 3 )  ( 5 , 4 )  ( 5 , 5 ) 

三丶while 循环

嘿!

当你不知道循环什么时候停下来的时候,为什么不试试 while

找出一个数最左边的那一位的数值(12345 的 1 )

# 我不知道它什么时候停下来

def leftmostDigit(n):

        n = abs(n)

        while n >= 10:

                n = n//10

        return n

leftmostDigit(46535248)

4

举个例子:依次找出 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

print("4 或 7 的倍数: ", end="")
for n in range(15):
    print(nthMultipleOf4or7(n), end=" ")

4 或 7 的倍数: 0 4 7 8 12 14 16 20 21 24 28 32 35 36 40 

四丶break 与 continue 语句

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

1 2 4 5 7 

假·死循环

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

def readUntilDone():
    linesEntered = 0
    while True:
        response = input("输入一个字符串(输入 done 则退出): ")
        if response == "done":
            break
        print("你输入了: ", response)
        linesEntered += 1
    print("Bye!")
    return linesEntered

linesEntered = readUntilDone()
print("你输入了", linesEntered, "行 (不包括 'done').")

你输入了:  learn
你输入了:  python
你输入了:  the
你输入了:  smart
你输入了:  way
Bye!
你输入了 5 行 (不包括 'done').


总结

  • For 循环用于指定范围的重复操作。
  • range() 可以生成一个数字范围。
  • 在不知道循环什么时间停止的时候,应该试试 While 循环。
  • 循环同样也是可以嵌套的。
  • 巧妙地使用 break 和 continue 语句。
  • 合理的剪枝,缩小搜索范围/循环范围,可以大幅提高程序运行效率。
  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值