• Python学习笔记3——判断和循环


    if语句的使用

    在Python中,要构造分支结构可以使用ifelifelse关键字。所谓关键字就是有特殊含义的单词,像ifelse就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名(事实上,用作其他的标识符也是不可以)。下面的例子中演示了如何构造一个分支结构。

     1 """
     2         3x - 5  (x > 1)
     3 f(x) =  x + 2   (-1 <= x <= 1)
     4         5x + 3  (x < -1)
     5 
     6 """
     7 
     8 x = float(input('x = '))
     9 if x > 1:
    10     y = 3 * x - 5
    11 elif x >= -1:
    12     y = x + 2
    13 else:
    14     y = 5 * x + 3
    15 print('f(%.2f) = %.2f' % (x, y))

    Python中没有用花括号来构造代码块而是使用了缩进的方式来设置代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了,换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。

    for-in循环

    如果明确的知道循环执行的次数或者要对一个容器进行迭代,那么我们推荐使用for-in循环,例如下面代码中计算1~100求和的结果。

     1 """
     2 用for循环实现1~100求和
     3 """
     4 """
     5 range(101)可以产生一个0到100的整数序列。
     6 range(1, 100)可以产生一个1到99的整数序列。
     7 range(1, 100, 2)可以产生一个1到99的奇数序列,其中2是步长,即数值序列的增量。
     8 """
     9 sum = 0
    10 for x in range(101):
    11 #sum += x 等价于 sum = sum + x
    12 #例如: a *= a + 2 # 相当于:a = a * (a + 2)
    13     sum += x
    14     print(x)
    15 print(sum)

    while循环

    如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True循环继续,表达式的值为False循环结束。

     1 """
     2 猜数字游戏
     3 计算机出一个1~100之间的随机数由人来猜
     4 计算机根据人猜的数字分别给出提示大一点/小一点/猜对了
     5 """
     6 
     7 import random
     8 
     9 answer = random.randint(1, 100)
    10 counter = 0
    11 while True:
    12     counter += 1
    13     number = int(input('请输入: '))
    14     if number < answer:
    15         print('大一点')
    16     elif number > answer:
    17         print('小一点')
    18     else:
    19         print('恭喜你猜对了!')
    20         break
    21 print('你总共猜了%d次' % counter)
    22 if counter > 7:
    23     print('你的智商余额明显不足')

    上面的代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个九九乘法表。

    1 """
    2 输出乘法口诀表(九九表)
    3 
    4 """
    5 
    6 for i in range(1, 10):
    7     for j in range(1, i + 1):
    8         print('%d*%d=%d' % (i, j, i * j), end='	')
    9     print()

    简写

    在阅读代码的时候,你可能会发现,有很多将条件与循环并做一行的操作,例如:

    1 expression1 if condition else expression2 for item in iterable

    将这个表达式分解开来,其实就等同于下面这样的嵌套结构:

    1 for item in iterable:
    2     if condition:
    3    expression1
    4     else:
    5    expression2

    而如果没有 else 语句,则需要写成:

    1 expression for item in iterable if condition

    举个例子,比如我们要绘制 y = 2*|x| + 5 的函数图像,给定集合 x 的数据点,需要计算出 y 的数据集合,那么只用一行代码,就可以很轻松地解决问题了:

    1 y = [value * 2 + 5 if value > 0 else -value * 2 + 5 for value in x]

    这样的复用并不仅仅局限于一个循环。比如,给定两个列表 x、y,要求返回 x、y 中所有元素对组成的元祖,相等情况除外。那么,你也可以很容易表示出来:

    1 [(xx, yy) for xx in x for yy in y if xx != yy]

    这样的写法就等价于:

    1 l = []
    2 for xx in x:
    3     for yy in y:
    4         if xx != yy:
    5             l.append((xx, yy))

    熟练之后,你会发现这种写法非常方便。当然,如果遇到逻辑很复杂的复用,你可能会觉得写成一行难以理解、容易出错。那种情况下,用正常的形式表达,也不失为一种好的规范和选择。

  • 相关阅读:
    DVB数字电视常见信号指标解释
    傅里叶变换与不确定性
    Sigrity PowerDC是如何计算IR Drop Margin?
    带你了解强大的Cadence家族,你可能只用到了它1/10的工具
    在线原理图绘制网站推荐
    FinFET简介
    SPICE简史
    时域反射计(TDR)原理与应用
    PCB仿真软件与电磁场求解器的算法
    Jersey 2 + Maven + Tomcat + IntelliJ IDEA 搭建RESTful服务
  • 原文地址:https://www.cnblogs.com/yuanxixing/p/12321636.html
Copyright © 2020-2023  润新知