跟光磊学Python开发程序流程控制

https://m.toutiao.com/is/JTDYwKQ/

程序流程控制概述

程序分为三种执行结构:

  • 顺序结构:即从上到下依次执行,之前编写的Phthon都是顺序结构

  • 分支结构:根据条件成立,选择执行不同的分支代码

  • 循环结构:根据条件成立,重复执行一段代码

分支结构

单分支if语句

if语句用于条件判断,其语法格式为

if 条件表达式:满足条件执行的代码

如果条件表达式的结果为True,则会执行满足条件执行的代码

判断用户输入的年龄是否大于18岁,才能去网吧上网

'''if 单分支条件判断@author tony 18601767221@163.com@version 2021-02-02 15:02:04@since python3.9.1'''def is_net(age):    '''    判断用户输入的年龄是否可以去网吧上网    :param age:    :return:    '''    if age >= 18:        print('你可以去网吧上网了')age = int(input('请输入你的年龄:'))is_net(age)

程序运行结果

双分支if/else语句

if/else用于条件判断,当if语句的条件表达式成立,执行if语句的满足条件执行的代码,否则就执行else的不满足条件执行的代码。执行结果是二选一

if/else语句的语法格式是

if 条件表达式:满足条件执行的代码else:不满足条件执行的代码

根据用户输入的年龄判断是否可以上网

'''if/else 双分支条件判断@author tony 18601767221@163.com@version 2021-02-02 15:02:04@since python3.9.1'''def is_net(age):    '''    判断用户输入的年龄是否可以去网吧上网    :param age:    :return:    '''    if age >= 18:        print('你可以去网吧上网了')    else:        print('年龄太小,回家好好学习吧')age = int(input('请输入你的年龄:'))is_net(age)

程序运行结果

使用if/else定义函数判断用户输入的数字是基数还是偶数

'''if/else判断用户输入的数字是奇数还是偶数@author tony 18601767221@163.com@version 2021-02-02 15:26:59@since python3.9.1'''def is_even_number(number): if number % 2 == 0: print(f'{number}是偶数') else: print(f'{number}是奇数')number = int(input('请输入一个数字:'))is_even_number(number)

程序运行结果

if/elif/else 多分支语句

if/elif/else用于多个条件判断,执行结果是多选一,其语法格式为

if 条件1:满足条件1执行的代码elif 条件2:满足条件2执行的代码elif 条件3:满足条件3执行的代码else:不满足条件执行的代码

if/elif/else多分支语句的执行流程是顺序判断,
先判断条件1,如果满足,就执行满足条件1执行的代码,
如果不满足条件1,那么就判断条件2,如果条件2满足,就执行满足条件2执行的代码,
如果不满足条件2,那么就判断条件3,如果条件3满足,那么就执行满足条件3执行的代码,
如果条件都不满足,那么就执行不满足条件执行的代码

else是可选的,但是一般都会写,用于容错

根据用户输入的日期判断星期几

'''if/elif/else多分支语句@author tony 18601767221@163.com@version 2021-02-02 15:44:00@since python3.9.1'''def is_week_day(day): ''' 根据用户输入的day判断星期几 :param day: :return: ''' if day == '1' or day == '一': print('星期一') elif day == '2' or day == '二': print('星期二') elif day == '3' or day == '三': print('星期三') elif day == '4' or day == '四': print('星期四') elif day == '5' or day == '五': print('星期五') elif day == '6' or day == '六': print('星期六') elif day == '7' or day == '日': print('星期日') else: print('你输入的日期有误')day = input('input day:')is_week_day(day)

if嵌套

if语句是可以相互嵌套的,用于复杂条件判断的应用场景

根据输入的分数判断等级

'''if嵌套@author tony 18601767221@163.com@version 2021-02-02 16:05:45@since python3.9.1'''def get_grade_by_score(score):    '''    根据输入的分数判断等级    :param score:    :return:    '''    if score > 100 or score < 0:        print('成绩不合法')    else:        if score >= 90:            print('成绩等级优')        elif score >= 80:            print('成绩等级良')        elif score >= 70:            print('成绩等级中')        elif score >= 60:            print('成绩等级差')        else:            print('成绩不及格')score = int(input('请输入你的成绩:'))get_grade_by_score(score)

程序运行结果

if语句实现三目运算符

python语言不支持其他语言的三目运算符,三目运算符表示有三个操作数,其语法格式是 表达式1?表达式2:表达式3,执行流程是如果表达式1的结果为True,三目运算符的结果为表达式2的值,否则为表达式3的值。
三目运算符就是if/else的简化形式,适合简单的条件判断。

而Python可以使用if/else实现三目运算符,其语法格式是表达式1 if 条件 else 表达式2,执行流程是判断条件是否成立,如果条件成立,执行结果为表达式1,否则执行结果为表达式2的值

'''if/else实现三目运算符@author tony 18601767221@163.com@version 2021-02-03 11:43:00@since python3.9.1'''def even_number_by_input(): ''' 判断用户输入的数字是奇数还是偶数 :return: ''' # 输入一个数字判断奇数偶数 number = int(input('请输入一个数字:')) result = '偶数' if number % 2 == 0 else '奇数' # 另外一种写法 # result = '奇数' if number % 2 != 0 else '偶数' return resultprint(test_func())

程序运行结果

随机数的使用

首先使用import random导入random模块,然后调用random模块的randint(a,b)函数产生随机数,a,b表示随机数的区间,随机数的值包含a和b

产生0-2之间的随机数,随机数的值是0,1,2

'''随机数的使用@author tony 18601767221@163.com@version 2021-02-02 16:20:03@since python3.9.1'''import random  # 导入random模块# 使用随机数模块获取随机数# 产生0-2之间的随机数,随机数的值是0,1,2n = random.randint(0, 2)print(n)

程序运行结果

猜拳游戏

此游戏有两个角色:分别是电脑和玩家
游戏的动作就是比较剪刀、石头、布的大小,为了方便比较,采用数字0,1,2分别表示石头、剪刀和布。
玩家输入的数字由键盘输入,电脑输入的数字由随机数生成。
然后比较两个数字的大小,如果数字相等就是平局,再按照石头>剪刀,剪刀>布,布>石头的规则比较是玩家赢了还是电脑赢了

为了优化程序,还需要编写一个方法,根据用户和玩家输入的数字判断输入的石头、剪刀、布

'''猜拳游戏@author tony 18601767221@163.com@version 2021-02-03 10:54:47@since python3.9.1'''import randomdef get(number): ''' 根据用户输入的数字判断返回石头、剪刀、布的字符串 :param number: :return: ''' str = '' if (number == 0): str = '石头' elif(number==1): str='剪刀' elif (number==2): str='布' return strdef guess_game(): ''' 猜拳游戏 :return: ''' player = int(input('请输入数字 0表示石头,1表示剪刀,2表示布:')) if (player < 0 or player > 2): print('你输入的数字非法') else: print('你输入的数字是%s' % get(player)) # 模拟电脑猜拳 0表示石头,1表示剪刀,2表示布 robot = random.randint(0, 2) print('电脑输入的是%s' % get(robot)) # 玩家和电脑输入的数字相等就是平局 if (player == robot): print('平局') # 比较玩家赢了的情况 elif ((player == 0 and robot == 1) or (player == 1 and robot == 2) or (player == 2 and robot == 0)): print('玩家赢了') else: print('电脑赢了')guess_game()

程序运行结果

循环结构

循环结构概述

每个循环结构都有四个要素

  1. 循环变量初始值

  2. 循环条件

  3. 循环体

  4. 循环步进,让循环变量趋近于结束循环

循环的执行过程
①->②->③->④->②->③->④->②->③->④->②->③->④

  • 循环变量初始值只会执行一次

  • 循环条件的运算结果类型是布尔类型

  • 当②不满足条件时,会结束循环

while循环

while循环的语法格式

while 条件:循环体

使用while循环打印1-100的值

'''使用while循环打印1-100的值@author tony 18601767221@163.com@version 2021-02-03 12:03:25@since python3.9.1'''def print_100(): ''' 打印1-100之间的整数 :return: ''' # 定义一个循环变量初始值 number = 1 # 判断条件 while number <= 100: # 循环体 print(number) # 循环步进 number += 1print_100()

break

break只能在循环中使用,不能在循环外使用,其作用是用于结束循环,不管循环还有多少次。

break在循环中的使用

'''break在循环中的使用@author tony 18601767221@163.com@version 2021-02-03 12:12:37@since python3.9.1'''def test_break():    while True:        print('Hello')        # 当while循环中执行到break会退出循环        break        # 循环退出后不会执行打印World        print('World')test_break()print('End')

程序运行结果

continue

continue也只能在循环中使用,不能在循环外使用,其中用是忽略本次循环,无论循环体中还有多少未执行的代码。

continue在循环中的使用

'''continue在循环中的使用@author tony 18601767221@163.com@version 2021-02-03 12:15:52@since python3.9.1'''def test_continue(): while True: print('Hello') continue # 当循环遇到continue会忽略循环,不会再执行之后的代码 print('World')test_continue()# 因为test_continue()方法是死循环,因此会一直打印Hello直到程序退出print('End')

程序运行结果

循环嵌套

当一个循环作为另外一个循环的循环体时构成了循环嵌套

嵌套循环的循环结构

while 条件1:while 条件2:循环体

条件1所在的循环称为外层循环,条件2所在的循环称为内层循环。
嵌套循环的执行流程是外层循环执行一次,内层循环执行一圈。例如外层循环执行3次,内层循环执行5次,当外层循环每执行一次时,内层循环都会执行5次

'''循环嵌套的使用@author tony 18601767221@163.com@version 2021-02-03 13:17:54@since python3.9.1'''def test_while_nest(): # 统计嵌套循环的执行次数 count = 0 ''' 外层循环执行3次,内层循环执行5次,总共执行15次 :return: ''' i = 0 while i < 3: print('i = %d' % i) i += 1 j = 0 while (j < 5): print('j = %d' % j) count += 1 j += 1 print('嵌套循环执行的次数是%d' % count)test_while_nest()

程序运行结果

当break在嵌套循环中使用时,退出的是break所在的循环,如果break定义在内层循环,那么break就是退出内层循环,如果break定义在外层循环,那么就是退出外层循环

'''break在嵌套循环的使用@author tony 18601767221@163.com@version 2021-02-03 13:36:48@since python3.9.1'''def test_while_nest_break():    i = 0    while i < 3:        print('i = %d' % i)        i += 1        j = 0        while j < 5:            # break 退出内层while循环            break            print('j = %d' % j)            j += 1test_while_nest_break()

程序运行结果

当continue在嵌套循环中使用时,结束本次循环。如果continue定义在内层循环,那么continue就是结束本次内层循环,如果continue定义在外层循环,那么就是结束本次外层循环

'''continue在嵌套while循环的使用@author tony 18601767221@163.com@version 2021-02-03 13:42:05@since python3.9.1'''def test_while_nest_continue(): i = 0 while i < 3: print('i = %d' % i) i += 1 if(i==1): # continue结束等于1时的外层循环 continue j=0 while j<5: print('j = %d'%j) j = j+1test_while_nest_continue()

程序运行结果

使用while循环和continue求指定数值范围内的偶数

'''使用while循环和continue求指定数值范围内的偶数@author tony 18601767221@163.com@version 2021-02-03 14:09:18@since python3.9.1'''def get_even_number(value):    number = 0    while number < value:        number += 1        if (number % 2 == 1):            continue        print('number = %d' % number)get_even_number(10)

程序运行结果

break和continue在嵌套循环的使用

'''break和continue在嵌套循环的使用@author tony 18601767221@163.com@version 2021-02-03 13:58:54@since python3.9.1'''def while_nest_break_continue(): i = 0 while i < 3: print('i = %d' % i) # 当打印i的之后,continue会结束外层的当前循环,继续进行外层循环的下一次循环 continue j = 0 while j < 5: print('j = %d' % j) j += 1 break i += 1while_nest_break_continue()

程序运行结果

使用嵌套循环打印矩形

print()函数的end参数默认是\n换行,这里通过end=' '改成空格

'''使用嵌套循环打印矩形@author tony 18601767221@163.com@version 2021-02-03 14:19:02@since python3.9.1'''def rectangle():    '''    使用嵌套循环打印矩形    :return:     '''    i = 0    while i < 5:        j = 0        while j < 5:            # print()函数的end参数默认是\n换行,这里通过end=' '改成空格            print('*', end=' ')            j += 1        print()        i += 1rectangle()

程序运行结果

使用嵌套循环打印等腰三角形

'''使用嵌套循环打印等腰三角形@author tony 18601767221@163.com@version 2021-02-03 14:34:48@since python3.9.1'''def triangle(): ''' 使用嵌套循环打印等腰三角形 :return: ''' i = 0 while i < 6: j = 0 while j <= i: print('*', end=' ') j += 1 print() i+=1triangle()

程序运行结果

使用嵌套while循环打印九九乘法表

'''使用嵌套while循环打印九九乘法表@author tony 18601767221@163.com@version 2021-02-03 14:42:03@since python3.9.1'''def multiplication_table():    '''    使用嵌套while循环打印九九乘法表    :return:    '''    i = 1    while i <= 9:        j = 1        while j <= i:            # print()函数默认是\n结尾,这里使用end替换成制表符            print('%d * %d = %-2d' % (j, i, (i * j)), end='\t')            j += 1        print()        i += 1multiplication_table()

程序运行结果

使用break和嵌套while循环实现九九乘法表

'''使用break结合嵌套循环实现九九乘法表@author tony 18601767221@163.com@version 2021-02-03 15:04:23@since python3.9.1'''def multiplication_table(): i = 1 while i <= 9: j = 1 while j <= 9: if (j > i): # 跳出内层循环 break print('%d * %d = %-2d' % (j, i, (j * i)), end='\t') j += 1 i += 1 print()multiplication_table()

程序运行结果

for-in循环

for-in循环是一种增强型循环,一般配合range()函数使用,
range()函数表示范围,默认是从0开始,例如range(10)表示从0-9,而range(1,10)表示从1-9,包含1,但是不包含10

其语法格式是

for 变量 in range()循环体

for循环会range()函数中得到的数列中依次取出数字放到循环变量中

for-in循环和range()函数的使用

'''for-in循环和range()函数的使用@author tony 18601767221@163.com@version 2021-02-03 15:10:11@since python3.9.1'''def test_func(): # 打印0到9的值 for i in range(10): print(i, end='\t') print() print('*' * 20) # 包含1,不包含10 for i in range(1, 10): print(i, end='\t')test_func()

程序运行结果

for-in循环实现九九乘法表

'''for-in循环实现九九乘法表@author tony 18601767221@163.com@version 2021-02-03 15:14:36@since python3.9.1'''def multiplication_table():    for i in range(1, 10):        for j in range(1, i+1):            print('%d * %d = %-2d' % (j, i, (i * j)), end='\t')        print()multiplication_table()

程序运行结果

使用for-in实现int()函数

'''使用for-in实现int()函数@author tony 18601767221@163.com@version 2021-02-03 15:57:05@since python3.9.1'''def my_int(str): ''' 实现int()函数 将字符串转换为对应的整数 :param str: :return: ''' result = 0 # 遍历字符串 for c in str: # 求字符对应的数值,即字符的ASCII编码值减去48就是字符对应的数值 number = ord(c) - ord('0') # 进行数值的累加 result = result * 10 + number return resultstr = '123'number = my_int(str)print(number)print('将字符串%s转换为整数的结果是%d' % (str, number))

程序运行结果

循环-else

Python中除了if有else之外,循环也有else,例如while-else和for-in-else
无论是while-else或者for-in-else都是在执行循环后,循环正常结束执行else后的代码,如果循环遇到了break或者continue 被中断执行 那么不会执行else后的代码。

'''for-in-else的使用@author tony 18601767221@163.com@version 2021-02-03 15:33:49@since python3.9.1'''def for_in_else_test():    for i in range(6):        print(i)        if (i == 5):            print('找到了5')            break    else:        print('没有找到5')        print('End')for_in_else_test()

程序运行结果

while-else的使用

'''while-else的使用@author tony 18601767221@163.com@version 2021-02-03 15:35:30@since python3.9.1'''def while_else_test(): i = 0 while i < 3: print(i) if (i == 5): print('找到了5') break i += 1 else: print('没找到2') print('End')while_else_test()

程序运行结果

(0)

相关推荐

  • 技高一筹!Python奶爸的鸡娃日常!

    来源:Python 技术「ID: pythonall」 孩又闹着不去幼儿园了,我得想个办法让他体会到学习的快乐和意义-- 带娃真难 玩了一个周末,玩舒服了,周一起床后,一听要去学校,就不干了,死活不去 ...

  • 跟光磊学Python开发

    跟光磊学Python开发-异常机制 原创ittimeline2021-02-15 17:21:45 异常概述 异常指的是不正常,也就是程序在执行过程中发生了不可预知的问题,导致程序崩溃. Python ...

  • 超详细的 Python 基础语句总结(多实例、视频讲解持续更新)

    目录 一.运算符 1.1 + --两个对象相加 1.2 - --得到负数或是一个数减去另一个数 1.3 * --两个数相乘或是返回一个被重复若干次的字符串.列表.元组 1.4 / --两个数相除 1. ...

  • pycallgraph-一个可视化Python应用程序流程(调用图)的工具

    欢迎!pycallgraph是一个Python模块,可为Python应用程序创建调用图可视化.   特征 支持Python 2.7+和Python 3.3+. 使用各种工具(例如Graphviz和Ge ...

  • 学Python用哪个开发环境好?【推荐】!

    Python是一门非常简单的编程语言,而且它的起源也很早,拥有很多开发软件,其中包含代码编辑器.IDE集成环境等,那么学Python下载什么软件呢?推荐这几个不错的软件. VS Code:这是一个免费 ...

  • Python 开发桌面程序,PyQt 实现计数器

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 作者:光临哈 来源:编程骑士 前言 PyQt是python的GUI框架之一,这是一个跨平台的UI框 ...

  • 第4天:Python 流程控制

    在编程的世界中,流程控制是程序员运行的基础,流程控制决定了程序按照什么样的方式去执行,本节给大家介绍 Python 流程控制相关语法. if 语句 if 语句表示如何发生什么样的条件,执行什么样的逻辑 ...

  • 挤公交时也可以学Python的小程序

    我知道,咱们的读者里有很多是利用业余时间学习 Python. 我也知道,业余时间学新技能,有多难: 没时间.白天要上班.上学,晚上要加班.写作业.带娃--有点空闲时间只想休息一下,要打开电脑打开教程打 ...

  • 运维转开发学Python还是Java?

    在我们身边肯定存在这样的小伙伴,以前从事运维岗,经过深思熟虑之后想要转开发岗,这时就会面临编程语言的选择,那么你知道运维岗转开发岗,该学习Python还是Java呢?跟着小编来看看吧. 首先,从运维岗 ...

  • 学Python必备的开发神器!

    人工智能时代的到来,Python作为人工智能的首选语言,变得越来越受欢迎,想要学习的人也有很多.今天,小编为大家介绍7款Python开发神器,希望给初学Python的你们带来帮助. Micro Pyt ...

  • 学Python真的有用,看它怎么控制你的手机

    今天来看下用Python代码怎么来控制你的安卓手机.具体的说是代替你的手,实现自动的触摸和一些动作,实现自动化操作!主要用的是安卓手机的Android调试桥(Android Debug Bridge) ...