Lumos学习python第四课:循环(Loop)

本文介绍了如何用Python解决给定整数数组加一的问题,涉及循环、遍历、while循环、for循环以及嵌套循环的概念,并通过实例展示了如何通过逆序遍历和处理进位来实现。同时讲解了Python中的循环结构和break/continue语句的用法。
摘要由CSDN通过智能技术生成

一、废话不多说,先来上道题!

1、题目(来自力扣)

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。

示例 2:

输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。

示例 3:

输入:digits = [0]
输出:[1]

提示:

  • 1 <= digits.length <= 100
  • 0 <= digits[i] <= 9

大多数编程语言中,循环语句通常包括for、while、do-while等类型,开发人员需要根据实际需求选择不同的循环结构来完成特定任务。在Python中,循环只有for和while两种形式

2、题解
class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        a = len(digits)#数组的长度
        for i in range(a-1,-1,-1): #循环
            if digits[i]!=9:
                digits[i] += 1
                for j in range(i+1,a,1):
                    digits[j] = 0
                return digits
        return [1] + [0] * a

大家可以试着理解下每行代码的意思,把代码学会了,再上高度,学算法~本次题目的难度较低,看下下面的题解吧~

当我们对数组(可以暂且理解为有顺序的集合,一个萝卜一个坑,之后我们会详细讲述下)加1时,会发现只有出现9的时候会出现进位,其他数字就是简简单单+1即可。我们可以考虑如下的三种情况:

①如果数组的末尾没有“9”,例如 [1,2,3],那么我们直接将末尾的数加1,得到 [1,2,4] 并返回;

②如果数组的末尾有若干个“9”,例如 [1,2,9,9][1,2,3,9,9],那么我们只需要找出从末尾开始的第一个不为 9 的元素,将该元素加1,得到 [1,3,9,9][1,2,4,9,9]。随后将末尾的9全部置零,得到 [1,3,0,0][1,2,4,0,0] 并返回;

③如果数组的所有元素都是9,例如 [9,9,9,9,9],那么答案为[1,0,0,0,0,0]。我们只需要构造一个长度比 多 1的新数组,将首元素置为1,其余元素置为0即可。

因此对数组进行一次逆序遍历,找出第一个不为9的元素,将其加一并将后续所有元素置零即可。如果所有的元素均为9,那么需要返回一个新的数组。在题解中的代码,我们发现了一个新功能:循环,也就是遍历的工具,接下来我们详细讲述一下。

二、循环(Loop)

1、遍历

先讲下啥是遍历,顾名思义,一遍一遍去经历,通俗来讲,就是机械地访问每一个对象。官方解释:循环可以用来取出列表中的元素,其原理其实就是根据索引自增的方式来一次进行列表中元素的取值,不仅仅是列表,包括字符串、字典、元组等序列都是可以通过循环来进行元素取值,这个过程称为遍历

2、while循环
i = 0
lst = ['a', 'b', 'c', 'd']

while i < 4:

    print(lst[i])

    i += 1

print("循环结束")

注意循环条件的范围不要超出列表本身长度,不然会报错,IndexError: list index out of range。

3、for循环

for循环主要是用于迭代序列(列表、元组、字典等)

通过for...in...格式能够遍历如序列中的每一个元素,结构如下:

lst = [1, 2, 3, 3]
for i in lst:
    print(i)

如果要通过for循环来制定任意循环次数的话通常是通过range()函数来实现。

range()是Python中一个内置的函数,它用于创建一个指定范围内连续的数字序列。range()函数有3个参数,起始位置start、终止位置stop和步长step,分别表示数字序列的起始位置、结束位置和连续数字之间的跨度。

range(start,stop,step) #stop不包含在内,左闭右开

range()函数需要至少传入一个参数(stop参数),如果只传入stop参数,则默认以0作为起始位置,步长为1。若还传入start参数,则以start为起始位置,步长为1。如果还传入step参数,则步长值为step。range()函数返回值是一个可迭代对象,可以通过循环或转换为列表等方式进行访问。注!传入stop值本身不被访问,可以这样记start闭,stop开。

4、循环中的小语句
break语句

有时候在循环中需要提前终止循环,例如需要找出列表中第一个值为3的元素,找到后进行输出然后终止循环,那么这个思路最关键的就是在循环体中需要判断列表元素是否等于3,如果等于的话就可以终止循环而不再进行之后的循环操作,这个需求就可以通过break语句来实现,代码如下:

a = [0,1,2,3,4,5]
for i in range(5,-1,-1):
    if a[i]==2:
        break
    else:
        print(a[i])

continue语句

与break语句不同的是,continue语句是用于跳过本次循环,如下:

a = [0,1,2,3,4,5]
for i in range(5,-1,-1):
    if a[i]==2:
        continue
    else:
        print(a[i])

三、嵌套循环

在 Python 中,嵌套循环是由多个循环结构嵌套组成的循环结构。嵌套循环可以用于对多维数据结构(如二维列表)进行遍历、查找和操作的过程中。

在嵌套循环中,外层循环用于控制内层循环的执行次数。具体实现方式可以使用 for 循环嵌套,也可以使用 while 循环嵌套。我们本道题就采取了嵌套循环,

# 嵌套循环遍历二维列表
a = [["元宵节","快乐", "!"], ["吃汤圆","了吗", "?"], ["祝你","天天开心", "!"]]
for i in a:     # 外层循环
    for j in i: # 内层循环
        print(j,end = " ")
    print()

四、小小唠叨

今天就不唠叨啥啦,大家好好过节吧,元宵节快乐~不过这个点,大家应该都玩差不多了吧,年过完了,大家收收心哈~一起加油,奔向更光明的未来!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值