• Python基础——for/while循环


      Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

      上学期间,常常遇到这样的情景:为了惩罚学生,老师会说:“XXX,你先去操场上跑10圈再回来继续反省。”

      这话虽短,但含义深刻。不过这在当时,我是体会不到其中的“深意”的。直至大学,当接触到C++编程时,我才领悟到这其中的内涵。原来这句话中饱含编程哲学啊。什么哲学呢?围着操场跑道,重复跑10圈……这不就是“循环”嘛?

      言归正传,for/while循环有什么作用呢?前面讲的Python基础知识中的代码就不需要循环啊。那下面来看几种情形呗~~~

      情形一:求和。求1+2+3的和,并输出结果。

    1 #哈哈,我就不用循环,看你咋的
    2 >>>sum = 1 + 2 + 3
    3 >>>print(sum)
    4 6

      情形二:再是求和。求1+2+3+4+5+6+7+8+9+10的和,并输出结果。

    1 #哈哈,我还不用循环,看你咋的
    2 >>>sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
    3 >>>print(sum)
    4 55

      情形三:还是求和。求1+2+3+……+99+100的和,并输出结果。

     1 #哈哈,我就不用循环,看你咋的
     2 #我可以这样啊
     3  >>>sum = 1 + 2 + 3 + ...... + 99 + 100
     4  Traceback (most recent call last):
     5    File "<stdin>", line 1, in <module>
     6 TypeError: unsupported operand type(s) for +: 'int' and 'ellipsis'
     7 #循环的魅力就在于此
     8 >>>sum = 0
     9 >>>for i in range(101):
    10     sum = sum + i
    11 >>>print(sum)
    12 5050

      看来,循环不用不行啊。

      range():生成一个整数序列。比如range(3)生成的序列是从0到2的整数:

    1 #range()方法
    2 >>>list(range(3))
    3 [0,1,2]
    4 >>>list(range(1,6))
    5 [1,2,3,4,5]

    while循环

      学习Python,使用笨方法可不行哦~~~

      就像上面的情形二,直接写求和表达式。

      为了避免上述情形二中笨重的代码,可以使用while循环:

    1 #while循环
    2 >>>sum = 0
    3 >>>i = 0
    4 >>>while i < 11:
    5 ...    sum = sum + i
    6 ...    i = i +1
    7 ...
    8 >>>print(sum)
    9 55

      在while循环内部,i不断加一,直到i变为11时,不再满足(i<11)while条件,循环退出。

      while循环可以用来在任何条件为True的情况下重复执行一个代码块。

      因此,while循环:只要条件满足,就不断循环,条件不满足时退出循环。

    for循环

      一般地,while循环已经可以应付大多数的循环案例。然而,还是有while循环够不着的地方。这时就需要for...in大显身手啦。

      比如要为一个集合的每个元素都执行一个代码块:

    1 #集合
    2 >>>L = ['I','can','Python','!']
    3 >>>for i in L:
    4 ...    print(i)
    5 ...
    6 I
    7 can
    8 Python
    9 !

      对于求和公式,for...in循环比while循环更加简洁:

     1 #for...in循环比while循环简洁
     2 #求和公式
     3 #for...in循环
     4 >>>sum = 0
     5 >>>for i in range(11):
     6 ...    sum = sum + i
     7 ...
     8 >>>print(sum)
     9 55
    10 #while循环
    11 >>>sum = 0
    12 >>>i = 0
    13 >>>while i < 11:
    14 ...    sum = sum + i
    15 ...    i = i + 1
    16 ...
    17 >>>print(sum)
    18 55

      注:若可以使用for...in循环,就尽量不用while循环

      对于循环中的break语句和continue语句,我不推荐大家使用。为什么呢?其一是容易出错;其二是可以通过改写循环条件或者修改循环逻辑来替代break语句和continue语句。

    死循环之吻

      对于死循环,我相信大家都印象深刻。有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。

      如何解决死循环问题呢?方法如下:

      一、Ctrl + C直接退出程序或强制结束Python进程。

       对于出现编写Python程序代码时出现意想不到的问题而引起的死循环的情况,这种方法非常有效。

    空代码块

      在Python中,空代码块是非法的。

      解决方法如下:

      二、pass语句:什么都不做。

       为了避免出现空代码块Error,方法就是在循环代码块中加入一个pass语句。

     1 #pass语句
     2 >>>for i in range(11):
     3 ...
     4 ...
     5   File "<stdin>", line 3
     6 
     7     ^
     8 IndentationError: expected an indented block
     9 #空代码块错误
    10 >>>for i in range(11):
    11 ...    pass
    12 ...
    13 >>>

    小结

      1. 为序列中的每一个元素执行一个语句块,或者在条件为真时继续执行一段语句;

      2. 可以使用continue语句和break语句,但不推荐使用;

      3. 死循环问题,Ctrl + C直接退出程序;

      4. 循环:让计算机做重复任务的有效的方法。

  • 相关阅读:
    牛客练习赛81 B. 小 Q 与彼岸花(DP/Trie/树状数组/FWT/好题)
    HDU6570 Wave(DP)
    HDU6567 Cotree(树的重心/树形DP)
    P1712 [NOI2016] 区间(双指针/线段树)
    P1063 [NOIP2006 提高组] 能量项链(区间DP)
    Jquery
    Jquery
    Jquery
    Jquery 学习
    JS学习
  • 原文地址:https://www.cnblogs.com/SmallWZQ/p/8477087.html
Copyright © 2020-2023  润新知