分支结构

  • 什么是分支结构

  • 为什么要用分支结构

  • 如何使用分支结构

    • if语法

    • if应用案例

循环结构

  • 什么是循环结构

  • 为什么要用循环结构

  • 如何使用循环结构

    • while循环语法

    • while循环应用案例

    • for循环语法

    • for循环应用案例

分支结构

什么是分支结构

# 分支结构就是根据条件判断的真假去执行不同分支对应的子代码

为什么要用分支结构

# 人类某些时候需要根据条件老决定做什么事情,比如:如果今天下雨,就带伞
# 所以程序中必须有相应的机制来控制计算机具备人的这种判断能力

如何使用分支结构

if语法

用if语法实现分支结构,完整语法如下

if 条件1:  # 如果条件1成立,就依次运行代码1、代码2
代码1
   代码2
elif 条件2:  # 如果条件2成立,就依次运行代码3、代码4
   代码3
   代码4
elif 条件3:  # 如果条件3成立,就依次运行代码5、代码6
   代码5
   代码6
else:  # 其他情况,就依次运行代码7、代码8
   代码7
   代码8
# 注意:
# 1、python用相同缩进(4个空格标识一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须是布尔类型
# 在if判断中所有的数据类型也都会转换成布尔类型
   # None、0、空(空字符串、空列表、空字典等)三种情况下转换成的布尔值为False,其余均为True
   

if应用案例

案例1:

如果:女人年龄>30,叫阿姨

age_of_girl = 31
if age_of_girl > 30:
   print('阿姨好')

案例2:

如果:女人年龄>30,叫阿姨,否则:叫小姐

age_of_girl = 18
if age_of_girl >30:
   print('阿姨好')
else:
   print('小姐好')

案例3:

如果:女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨**

age_of_girl = 18
height = 171
weight = 99
is_pretty = True
if age_of_girl >=18 and age_of_girl < 22 and weight < 100 and height > 170:
   print('表白')
else:
   print('阿姨好')

案例4:

如果:成绩>=90,那么:优秀

如果:成绩>=80且<=90那么:良好

如果:成绩>=70且<=80,那么:普通

其他情况:很差

score = int(input('请输入你的分数>>>:'))
if score >= 90:
   print('优秀')
elif score >= 80:
   print('良好')
elif score >=70:
   print('普通')
else:
   print('很差')

案例5: if嵌套

在表白的基础上继续

如果表白成功,那么,在一起

否则:打印。。。

age_of_girl = 18
height = 171
weight = 99
is_pretty = True
success = False
if age_of_girl >=18 and age_of_girl < 22 and weight < 100 and height > 170:
   if success:
  print('表白')
   else:
       print('什么爱情不爱情的,爱个pi')
else:
   print('阿姨好')

练习

练习1:登录功能

name = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
if name == 'egon' and password == '123':
   print('登陆成功')
else:
   print('用户名或密码错误')
​

练习2:根据用户输入其权限

name = input('请输入用户名字')
if name == 'cx':
   print('超级管理员')
elif name == 'egon':
   print('普通管理员')
elif name == 'json':
   print('业务管理员')
else:
   print('普通用户')

循环结构

什么是循环结构

循环结构就是重复运行某段代码块

为什么要用循环结构

人某些时候需要重复做某件事情
所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力

如何使用循环结构

while循环语法

python中有while和for两种循环机制,其中while循环称之为条件循环,语法如下
while 条件:
   代码1
   代码2
   代码3
while运行的步骤:
步骤1:如果条件为真,那么依次执行代码1、代码2、代码3
步骤2:执行完毕后再次判断条件,如果条件为True则再次执行代码1、代码2、代码3,如果条件为False,则种植循环

while循环应用案例

案例1: while循环的基本使用

用户认证程序

# 用户认证程序的基本逻辑就是接收用户输入的用户名和密码然后与程序中存放的用户名和密码进行判断,判断成功则登陆成功,判断失败则输出,账号或密码错误
username = 'json'
password = '123'
count = 0
while count < 3:
   inpu_name = input('请输入用户名:')
   inpu_pwd = input('请输入密码:')
   if inpu_name == username and inpu_pwd == password:
       print('登陆成功')
else:
       print("输入的用户名或密码错误!")
       count += 1  

案例二:while+break的使用

使用了while循环后,代码确实精简多了,但问题是用户输入正确的用户名密码以后无法结束循环,那如何结束掉一个循环呢?这就需要用到break了!

username = "jason"
password = "123"
# 记录错误验证的次数
count = 0
while count < 3:
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == username and inp_pwd == password:
       print("登陆成功")
       break # 用于结束本层循环
   else:
       print("输入的用户名或密码错误!")
       count += 1

案例三:while循环嵌套+break

如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break

username = "jason"
password = "123"
count = 0
while count < 3:  # 第一层循环
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == username and inp_pwd == password:
       print("登陆成功")
       while True:  # 第二层循环
           cmd = input('>>: ')
           if cmd == 'quit':
               break  # 用于结束本层循环,即第二层循环
           print('run <%s>' % cmd)
       break  # 用于结束本层循环,即第一层循环
   else:
       print("输入的用户名或密码错误!")
       count += 1

案例四:while循环嵌套+tag的使用

针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束

username = "jason"
password = "123"
count = 0
​
tag = True
while tag:
   inp_name = input("请输入用户名:")
   inp_pwd = input("请输入密码:")
   if inp_name == username and inp_pwd == password:
       print("登陆成功")
       while tag:  
           cmd = input('>>: ')
           if cmd == 'quit':
               tag = False  # tag变为False, 所有while循环的条件都变为False
           print('run <%s>' % cmd)
   else:
       print("输入的用户名或密码错误!")
       count += 1

案例五:while+continue的使用

break代表结束本层循环,而continue则用于结束本次循环,直接进入下一次循环

# 打印1到10之间,除7以外的所有数字
number=11
while number>1:
   number -= 1
   if number==7:
       continue # 结束掉本次循环,即本次循环continue之后的代码都不会运行了,而是直接进入下一次循环
   print(number)

案例六:while+else的使用

在while循环的后面,我们可以跟else语句,当while 循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束

count = 0
while count <= 5 :
   count += 1
   print("Loop",count)
else:
   print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
Loop 3
Loop 4
Loop 5
Loop 6
循环正常执行完啦   #没有被break打断,所以执行了该行代码
-----out of while loop ------

如果执行过程中被break,就不会执行else的语句

count = 0
while count <= 5 :
   count += 1
   if count == 3:
       break
   print("Loop",count)
else:
   print("循环正常执行完啦")
print("-----out of while loop ------")
输出
Loop 1
Loop 2
-----out of while loop ------ #由于循环被break打断了,所以不执行else后的输出语句

练习

练习1

寻找1到100之间数字7最大的倍数(结果是98)

number=100
while number>0:
   if number%7==0:
       print(number)
       break
   number-=1

练习2

age=18
count=0
while count<3:
   count+=1
   guess = int(input(">>:"))
   if guess > age :
       print("猜的太大了,往小里试试...")
   elif guess < age :
       print("猜的太小了,往大里试试...")
   else:
       print("恭喜你,猜对了...")

for循环语法

循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁

for 变量名 in 可迭代对象: # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会专门讲解可迭代对象
   代码一
   代码二
  ...
​
#例1
for item in ['a','b','c']:
   print(item)
# 运行结果
a
b
c
​
# 参照例1来介绍for循环的运行步骤
# 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码
# 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码
# 步骤3: 重复以上过程直到列表中的值读尽

for循环应用案例

案例一:打印数字0-5

# 简单版:for循环的实现方式
for count in range(6):  # range(6)会产生从0-5这6个数
   print(count)
​
# 复杂版:while循环的实现方式
count = 0
while count < 6:
   print(count)
   count += 1

案例二:遍历字典

# 简单版:for循环的实现方式
for k in {'name':'jason','age':18,'gender':'male'}:  # for 循环默认取的是字典的key赋值给变量名k
   print(k)
​
# 复杂版:while循环确实可以遍历字典,后续将会迭代器部分详细介绍

案例三:for循环嵌套

#请用for循环嵌套的方式打印如下图形:
*****
*****
*****
​
for i in range(3):
   for j in range(5):
       print("*",end='')
   print()  # print()表示换行

注意:break 与 continue也可以用于for循环,使用语法同while循环

练习

练习一:

打印九九乘法表

for i in range(1,10):
   for j in range(1,i+1):
       print('%s*%s=%s' %(i,j,i*j),end=' ')
   print()

练习二:

打印金字塔

# 分析
'''
#max_level=5
    *       # current_level=1,空格数=4,*号数=1
  ***       # current_level=2,空格数=3,*号数=3
  *****     # current_level=3,空格数=2,*号数=5
*******     # current_level=4,空格数=1,*号数=7
*********   # current_level=5,空格数=0,*号数=9
​
# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
# 实现:
max_level=5
for current_level in range(1,max_level+1):
   for i in range(max_level-current_level):
       print(' ',end='') #在一行中连续打印多个空格
   for j in range(2*current_level-1):
       print('*',end='') #在一行中连续打印多个空格
   print()

07.python语法入门--流程控制的更多相关文章

  1. 8、Python语法之流程控制

    一 引子 流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构).分支结构(用到if判断).循环结构(用到while与for) 二 分支结 ...

  2. python语法入门之流程控制

    python语法入门之流程控制 流程控制是指控制流程,具体指控制程序执行的流程. 流程控制分为三种: 1.顺序结构 程序从上而下的正常执行(正常执行的代码就是顺序结构) 2.分支结构 赋予程序人的思维 ...

  3. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  4. Java基础语法(4)-流程控制

    title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...

  5. 【Java基础】基本语法-程序流程控制

    基本语法-程序流程控制 程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺 ...

  6. Python基础之:Python中的流程控制

    目录 简介 while语句 if 语句 for语句 Break Continue pass 简介 流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样 ...

  7. Java基础语法与流程控制

    Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...

  8. python中的流程控制

    目录 引言 流程控制的分类 分支结构 单if结构 if与else结构 if与elif与else结构 if分支的嵌套 循环结构 while循环 while + break循环 while + conti ...

  9. Java基础语法02——流程控制

    流程控制:顺序结构.分支结构(if-else.switch-case).循环结构(for.while.do-while)

随机推荐

  1. Servlet初级学习加入数据库操作(一)

    需要的源代码地址: https://url56.ctfile.com/f/34653256-527822631-2e255a(访问密码:7567) 将页面中的数据逐步替换为数据库管理 准备一个连接数据 ...

  2. vue部署服务器以及解决部署到apache路由出现404

    最近在开发cms的时候使用Vue.js框架,利用vue-route.vue-cli结合webpack编写了一个单页路由项目,自己在服务器端配置apache.部署完成后,访问没问题,从页面中点击跳转就会 ...

  3. windows server 服务器安装jenkins 并通过git拉取代码实现自动发布到IIS

    Jenkins是一个开源软件,可以通过一定的配置进行自动构建,测试,部署等功能. 首先,服务器应安装好 .NET Core环境和JDK, 下载Jenkins安装包 https://www.jenkin ...

  4. 网络编程-基于Websocket聊天室(IM)系统

    目录 一.HTML5 - Websocket协议 二.聊天室(IM)系统的设计 2.1.使用者眼中的聊天系统 2.2.开发者眼中的聊天系统 2.3.IM系统的特性 2.4.心跳机制:解决网络的不确定性 ...

  5. 2月3日 体温APP开发记录

    1.阅读构建之法 现代软件工程(第三版) 2.观看Android开发视频教程最新版 Android Studio开发 3.回返地址学习,下载导入相关jar包

  6. android ndk下没有pthread_yield,好在std::this_thread::yield()可以达到同样的效果

    一个多线程的算法中,发现线程利用率只有47%左右,大量的处理时间因为usleep(500)而导致线程睡眠: 性能始终上不去. 把usleep(500)修改为std::this_thread::yiel ...

  7. web自动化-selenium 入门篇

    selenium安装介绍 selenium是web浏览器的自动化工具 官网:https://www.selenium.dev 构成: WebDriver: 浏览器提供的浏览器api来控制浏览器(模拟用 ...

  8. Qt之消息对话框

    widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QLineEdit> class ...

  9. 了解promise、promise对象

    Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象. 所谓Pr ...

  10. 解决matplotlib中文不显示问题

    在导入库时添加如下几行代码 from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcPa ...