Python循环语句:for循环和while循环

在编程中,有时需要让代码重复多次相似或相同的操作。比如输出列表中的逐个元素,我们通常不喜欢下面这种编程方式:

list1 = [0, 1, 2, 3, 4]
print(list1[0])
print(list1[1])
print(list1[2])
print(list1[3])
print(list1[4])

此时运行结果会依次输出列表的元素,但显然这会让代码显得冗余,而且当元素数量很庞大时这几乎就变成了一个不可能的任务,所以就要用到循环语句

在Python中,循环语句分为有for循环和while循环两种。

for循环

for循环的流程图如下所示:

当需要需要遍历整个序列,或需要自定义循环次数,就可以使用for循环语句。for循环的语法为:

for i in sequence:

        <执行语句>

i为变量,名字可任意指定,sequence为需要被遍历的序列。

例如,使用for循环来逐个输出列表内的元素:

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in list1:
    print(i, end = ' ')    #用end进行同行输出
                           #运行结果为0 1 2 3 4 5 6 7 8 9 

如果想按顺序输出列表内前i个元素,或自定义循环次数,需要使用到python内置的函数range。

比如,遍历上面列表中的前五个元素:

list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(5):
    print(i, end = ' ')#输出结果为0 1 2 3 4 

print(list(range(5)))  #输出结果为[0, 1, 2, 3, 4]

最后一行代码表示,range函数本质上也是一种序列,当我们想把遍历次数作为参数给到range函数里,其实就是创建了一个从0数到n-1的一个序列,然后通过for循环来遍历这个序列。

注意,for循环中的变量i指向序列中的元素,而不是序列的索引,也不是循环次数。

list1 = [4, 5, 6]
for i in list3:
    print (i, end = ' ') #end用于同行输出
                         #运行结果为4 5 6 

while循环

while循环的流程如下图所示:

while语句的格式如下:

while <判断语句>:

        <执行代码>

while语句一般用于需要达成某种条件才能跳出循环的情况。比如用while循环来计算2的最大多少幂次不超过2050,当值数值超过2050时跳出循环。(pow(a, b)代表a的b次方)

n = 0
while pow(2, n) < 2050: #判断条件为计算结果不超过2050
    n = n + 1
print(n)                #运行结果为12

如果while后的判断条件为1,就可以实现无限循环。

break和continue

break表示跳出或结束循环过程去执行新的语句。

continue表示结束本次迭代并进行下一次迭代,当循环体很庞大且存在多个需要跳过它的原因时很有用。

例如,通过循环打印一段字符串,当遇到字母a时跳过输出,遇到字母e时中断循环:

for i in 'Iamastudent':
    if i == 'a':    
        continue            #如果为a继续循环不进行其他操作
    elif i == 'e':
        break               #如果为e跳出循环
    else:
        print(i, end = '')  #end用于同行输出
#运行结果为Imstud

pass语句

pass语句代表不执行任何操作,和continue区别的地方在于,使用pass语句之后不结束本次迭代。

for i in 'python':
    if i == 'p':
        pass
        print('Pass!')     
    elif i == 'y':
        continue
        print('Continue!')
    else:
        print(i, end = '') 

代码的运行结果为:

从运行结果可以看出,当执行pass语句时,并没有结束本次迭代,继续执行了下一行的打印语句。而执行continue语句时,结束了本次迭代,下一行的打印语句并没有执行。

else子句

else子句也可以与for循环语句一起使用,用于在循环结束执行一段代码。

例如在逐个输出列表元素时,当循环结束之后打印一次"循环成功结束!"。

number = [1, 4, 5, 8]
for i in number:
    print(i)
else:
    print("循环成功结束!")

代码运行结果为:

不过由此会产生一些疑问,如果不使用else语句,直接在循环结束之后加一句print打印语句结果不也是一样吗?

设想接下来一种情况,如果有一些"病毒"数据存在于列表中,当检索到病毒数据时,需要立即跳出循环,并且不能输出"循环成功结束!"语句。

number = [1, 4, 5, 'virus', 8]
for i in number:
    if i == 'virus':
        print("Error!")
        break
    else:
        print(i)
else:
    print("循环成功结束!")

代码运行结果为:

由此可见,else子句在循环中也有其存在的理由。当时用break语句跳出循环时,是不执行else语句的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值