首页 > 编程语言 >python之流程控制-分支结构、循环结构

python之流程控制-分支结构、循环结构

时间:2022-09-27 19:22:37浏览次数:45  
标签:count python 流程 else 关键字 循环 print 代码 结构

流程控制

编写程序,是将自己的逻辑思想记录下来,使得计算机能够执行的过程。

而流程控制,则是逻辑结构中十分重要的一环。

在程序中,基础的流程结构分为顺序结构、分支结构、顺序结构

顺序结构自不必多说,上一句代码执行后,紧接着执行下一句代码,这样的程序就是顺序结构。

本文将以python中的语法为例,解释分支结构和顺序结构。

分支结构

当我们出门时,会查看天气,如果下雨了,就会拿一把雨伞,如果没有下雨就不拿伞,那么一个条件的成立与否会决定后续执行不同的操作,这种情况就是分支结构。

if关键字

刚才的那个例子,放到程序里,则会按如下伪代码实现:

出门前看天气
if 下雨了:
    拿一把伞
出门

这两行代码的意思指,如果下雨了,就拿伞。

if关键字的用法:

  • if后跟条件,再跟一个冒号
  • 如果if后的条件成立了,那么执行缩进的代码
  • 缩进的代码的缩进位数必须相同

我们再将刚才的伪代码换为真代码演示一遍:

print('我要出门了,查看一下天气')   # 顺序结构
is_rain = True  # 也可以换为False试一下
if is_rain:  # 条件判断
    print('会下雨,拿把伞')  # 缩进的代码
    is_umbrella = True  # 记录拿伞的状态
print('好,出门')  # 下雨
扩展:子代码块

刚才,在if关键字的用法中,我们提到了缩进的代码这个词,它被称作子代码块。

在python中,子代码块用缩进的方式来表示,

  • 相同缩进的代码块代表同级代码块
  • 顶格的代码都是顶级代码
  • python缩进的规范是4个空格(pycharm中可以用tab键)
  • 不是所有的代码都能拥有子代码块,if关键字是可以拥有子代码块的关键字之一

所以,在之前雨伞的例子里,无论下不下雨,当if关键字执行完毕后,顶级代码‘出门’都会顺序执行。

else关键字

刚才例子中,我们只考虑了条件成立的情况,条件不成立时则不做任何操作,那我们如何让条件不成立时,也可以有所操作呢,就要用到else关键字。

print('我想出门散散步')
if is_rain:
    print('看来老天不赏脸')
else:
    print('天气不错,走起')
# 上述程序中,如果下雨了就打印不出门,如果不下雨则打印出门。

image

else关键字的意思是:其余情况,则运行else下方的子代码块。

elif关键字

那有时,条件的情况并没有那么简单,比如,我们要根据分数情况给予学生一个评级,则是与不是这两种状态显然就不够用了,if和else的两种分支也是不够用的。

例子:分数评级小程序

score = input('分数:')
score = int(score)   # 将输入的字符串转化为整型的语法
if score >= 90:
    print('无敌')
elif score >= 80:
    print('牛牛')
elif score >= 70:
    print('可以')
elif score >= 60:
    print('就这')
else:
    print('滚蛋')

在这个程序中,会依次的判断if后的条件和elif后的条件是否成立,当某个条件成立后,则执行对应的子代码块,子代码块执行结束后分支结束。

image

实践练习
# 1.根据用户输入内容打印其权限
    '''
    jason --> 超级管理员
    tom  --> 普通管理员
    jack,rain --> 业务主管
    其他 --> 普通用户
    '''
# 参考
username = input('请输入用户名:')

if username == "leethon":
    print('超级管理员')
elif username == 'tom':
    print('普通管理员')
elif username in ['jack', 'rain']:
    print('业务主管')
else:
    print('普通用户')

分支嵌套

分支的下面依然可能有分支,实现方式是if的子代码块中加入if关键字,这样就形成了一个循环嵌套

例子:2.编写用户登录程序,
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的已注册的用户则允许登录(判断用户名和密码)
eg: user_dict = {'oscar': 123, 'lily': 123}

# 参考
username = input('请输入用户名:')
pwd = input('请输入密码')
black_user_list = ['jason', 'kevin', 'tony']
user_dict = {'oscar': '123', 'lily': '123'}

if username in black_user_list:
    print('你已经是黑名单了')
elif username in user_dict:  # 如果是已注册用户则验证密码
    if user_dict[username] == pwd:  # 密码对错的分支
        print('登录成功')
    else:
        print('密码错误')
else:  # 如果输入的用户名不在两个名单中
    print('用户名不存在')

循环结构

循环结构用于重复执行相同的代码,在循环结构的子代码结束后,会重新回到循环开头,判断是否进入下一个循环。

while关键字

count = 0
while count < 10:
    print(count, end='')
	count += 1
# 0123456789

while关键字也是可以跟子代码块的关键字,其执行的逻辑是:

  1. 当条件(count < 10)满足时,执行子代码块
  2. 子代码块执行完毕后,回到while后的条件判断是否进入下一个循环
while 条件:
    子代码块

break关键字

当循环执行时,如果碰到了break,就终止循环,执行后续程序。

例子:

# 当遇到4就终止循环
count = 0
while count < 10:
    if count ==4:
        break
    print(count, end='')
	count += 1
# 0123

break意思是打断现在的循环,直接运行while后续同级代码。

上述代码中,当遇到4时,就进入了含break的分支,则终止循环,而count不为4时,就不会遇到break,循环就会继续。

continue关键字

当循环执行时,如果碰到了continue,就跳出此次循环,不执行后续的子代码,进入下一个循环。

例子:

# 当遇到4就跳过打印
count = 0
while count < 10:
    if count ==4:
        count += 1  # 因为后续的count+1不会执行,所以这里要在加上
        continue
    print(count, end='')
	count += 1
# 012356789

上述代码中也用到了循环嵌套分支的结构,来控制循环的代码。

实例练习

用户登录程序

# 编写用户登录程序
# 用户如果登录失败 则只能尝试三次
# 用户如果登录成功 则直接结束程序
# 参考
user_dict = {'oscar': '123', 'lily': '123', 'kevin': '123'}
count = 0
while count < 3:
    username = input('请输入用户名:')
    pwd = input('请输入密码:')
    if username in user_dict:
        if user_dict[username] == pwd:
            print('登录成功')
            break
        else:
            print('密码错误')
            count += 1
    else:
        print('用户名错误')
        count += 1

猜年龄游戏

# 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
# 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
# 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试
# 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序\\
is_play = True
while is_play:
    count = 0
    while count < 3:
        inp_age = int(input('请猜年龄:'))
        if inp_age == 18:
            print('恭喜猜对了')
            exit()
        elif inp_age < 18:
            print('猜小了')
        else:
            print('猜大了')
        count += 1
    is_play = input('是否还要继续玩(y/n):')
    if is_play == 'y':
        is_play = True
    else:
        is_play = False

标签:count,python,流程,else,关键字,循环,print,代码,结构
From: https://www.cnblogs.com/Leethon-lizhilog/p/16735636.html

相关文章

  • 垃圾回收机制和流程控制理论
    垃圾回收机制和流程控制理论今日内容概要垃圾回收机制流程控制理论(重要)流程控制之分支结构(重要)流程控制之循环结构(重要)今日内容详细垃圾回收机制"""有一些语言......
  • 关于python的opencv库的学习笔记,腐蚀与膨胀
    importcv2importnumpyasnp##img=cv2.imread('cat.jpeg')##cv2.imshow('cat',img)##cv2.waitKey()##cv2.destroyAllWindows()##对图像进行腐蚀操作#ken=np.ones......
  • python 读取excel
    #!/usr/bin/envpython#-*-coding:utf-8-*-importwarningswarnings.filterwarnings('ignore')importopenpyxlfromopenpyxl.cellimportMergedCellimporto......
  • 垃圾回收机制、流程控制、分支结构、循环结构
    垃圾回收机制"""有一些语言内存空间的申请和释放都需要程序员自己写代码才可以完成但是python却不需要通过垃圾回收机制自动管理"""1.引用计数name='jason' ......
  • 垃圾回收机制 流程控制
    垃圾回收在程序执行过程中,变量绑定和引用以积极各种内存操作,使用过后不在使用,如果不清理就会产生垃圾数据,占用大量内存,导致计算机不能正常运行,有一些语言内存空间的申请......
  • 垃圾回收机制及流程控制
    1、昨日内容回顾布尔值(bool)常见的布尔值为False的数据值、布尔值的变量的命名方式。元组(tuple)不可变数据类型。集合(set)用来做成员运算、空集合。计算机......
  • 对结构性伪类的顶级理解
      (E:nth-child(2n)和E:nth-last-child(2n))与(E:nth-of-type(2n)和E:nth-last-of-type(2n))都是选择任意父元素下的E类型子元素。区别n值的分配方式,左边的是不分......
  • 流程控制
    今日内容回顾垃圾回收机制流程控制理论流程控制之分支结构(重要)流程控制之循环结构(重要)今日内容回顾详情垃圾回收机制1.引用计数引用计数是计算机编程语言中的一......
  • 11 | python脚本更改linux系统下的文件权限
    在文件上传至linux系统的过程中遇到了执行文件不可执行的问题。于是自己写了一个python脚本和文件夹放到一起,上传后运行即可!frompathlibimport*#目录文件名......
  • Python学习:绑定方法与非绑定方法
    一、绑定方法与非绑定方法类中定义的函数分为两大类:绑定方法和非绑定方法其中绑定方法又分为绑定到对象的对象方法和绑定到类的类方法。在类中正常定义的函数默认是绑定......