• 【Python3】Python程序结构


    前言

            hi~大家好呀!欢迎点进我的Python系列学习笔记,我们一起进步呀!

            本篇主要讲结构化程序设计中三种基本结构在Python中是如何实现的,以及相关的流程控制。

            我们知道计算机的程序设计包括面向对象面向过程面向对象程序设计在细节实现上,也需要面向过程的内容。而结构化程序设计就是面向过程的编程方法:顺序结构,分支结构,循环结构(三种基本流程)。而顺序结构就是根据程序从上到下按照顺序执行的代码顺序。下面就来介绍其他的流程控制:

     --------------------------------------------------------------------------------------------------------------------------------

    目录

    一、分支结构

    二、循环结构

    1.for循环结构:

     2.条件循环while:

    3.控制循环流程的语句:

    三、pass以及循环结构的else语句


    一、分支结构

            if语句实现分支结构,格式如下:

    1.简单分支语句:if

    if <条件(逻辑表达式)>:

            ...(if执行语句块)

            ...(if执行语句块)

    ...

    2.选择分支结构:if else

    if <条件(逻辑表达式)>:

            ...

    else:

            ...

    ...

    3.多分支结构:if elif ... else

    if <条件(逻辑表达式)>:

            ...

    elif <条件>:

            ...

    elif...

            ...

    ...

    else:

            ...

            比如利用分支结构实现一个输入年和月输出当月天数:

    1. year = eval(input("请输入年份:"))
    2. month = eval(input("请输入月份:"))
    3. day = 0
    4. if month == 2:
    5. if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): # 闰年
    6. day = 29
    7. else: # 平年
    8. day = 28
    9. elif month == 1 or month == 3 or month == 5 \
    10. or month == 7 or month == 8 or month == 10 or month == 12: # 大月
    11. day = 31
    12. else: # 剩下的全是小月了
    13. day = 30
    14. # print("{}年{}月一共有{}天".format(year, month, day))
    15. print("%d年%d月一共有%d天" % (year, month, day))

     

            特别的,对于如下结构:

    a= b if 条件 else c

    如果满足if条件,就将b给a,否则就把c给a。有点类似于C/C++三目运算符?:

            比如:

    1. a = 3
    2. b = 4
    3. c = 0
    4. c = a if a > b else b
    5. print(c)

            注意Python下没有?:的用法哦。 

    二、循环结构

            循环结构是在一定的条件控制下,反复执行其代码块的控制结构。Python中常见几种循环结构格式如下:

    1.for循环结构

    for in :

            ...

            解释:var是一个变量,seq是一个序列。可以理解为var逐一从seq提取元素,in在之前的字符串那里了解了一点点,也就是判断是否在此seq内,在也就是循环中就是继续执行,不在也就是遍历完了就False就退出。seq序列可以是字符串,列表,文件,或者range()函数等。

            range()函数:Python中的内置函数,用于创建一个整数列表,一般用于for循环中(注意虽然是列表,但是类型还是range类型,想转换为列表需要list()进行转换哦

            格式:range([start,] stop[, step])

            创建区间[start,stop)的列表,step表示每一次递增多少,默认为1。start默认从0开始。

    1. ran1 = range(0, 5) # [0 1 2 3 4]
    2. ran2 = range(0, 5, 2) # [0, 2, 4]
    3. for i in ran1:
    4. print(i, end="")
    5. print()
    6. for j in ran2:
    7. print(j, end="")
    8. print()
    9. str1 = "abcde"
    10. for z in str1:
    11. print(z)

      

            当然上面只是一个演示,平时可以直接在for循环里ran1写成range即可。

            下一利用for做一个应用:输入一个整数n,计算从1到n的阶乘之和:

    1. def factorial(n):
    2. sum1 = 0
    3. num = 1
    4. for i in range(1, n + 1):
    5. num *= i
    6. sum1 += num
    7. return sum1
    8. n = eval(input("请输入n值:"))
    9. print("从1!到{}!的阶乘和为{}".format(n, factorial(n)))

     

            def是定义函数的意思,返回值类型不用写,参数为n,在传参的时候识别类型。

     2.条件循环while:

    while <条件>:

            ...

    每次循环时,判断条件是否为True,是就继续循环,否则就退出循环语句。

            下面利用while循环,对列表里面的值进行头尾互换:

    1. list1 = [1, 2, 3, 4]
    2. head = 0
    3. tail = len(list1) - 1
    4. while head < tail:
    5. list1[head], list1[tail] = list1[tail], list1[head]
    6. head += 1
    7. tail -= 1
    8. print(list1)

             其中list1[head], list1[tail] = list1[tail], list1[head]语句就是表示head下标和tail下标元素互相交换的意思。

    3.控制循环流程的语句:

            break:结束循环。

            continue:结束本次循环,执行下一次循环。

    三、pass以及循环结构的else语句

            pass语句是空语句的意思,为了保持结构的完整性设计的。意思时将来会有程序语句代替pass所在位置,所以pass先将位置占好,提高程序的可读性。

            在其他语言中,else只会在分支结构出现,但是在Python中,为了对本次循环结束进行一些特殊说明,那么就可以对循环结构使用else语句,会在此循环结束后执行里面的内容。当然,如果存在break也会跳过else里面的内容:

    1. # 比如我们识8为不正常数据,需要break
    2. for i in range(8):
    3. if i == 8:
    4. break
    5. else:
    6. print("正常结束")
    7. for i in range(9):
    8. if i == 8:
    9. break
    10. else:
    11. print("正常结束")

            可以发现只打印了一次正常结束,就说明第二个循环发生了break。 

  • 相关阅读:
    Redis
    【华为机试真题 JAVA】勾股数元组-100
    2、HTML——标题分组、居中、引用标签、水平线标签下划线标签、删除标签、<font>标签、图像标签
    投资理财:买理财亏损不保本怎么办?
    线段树 模板 Java语言版
    Oracle 11g DataGuard 搭建笔记(Windows Server 2016)
    【Unity3D】Unity 游戏画面帧更新 ( 游戏物体 GameObject 移动 | 借助 Time.deltaTime 进行匀速运动 )
    PTA题目 谁先倒
    逆向中webpack需要补充的模块很多怎么办
    从第三方数据集成工具迁移到Apache SeaTunnel的实操经验分享
  • 原文地址:https://blog.csdn.net/weixin_61508423/article/details/126439773