day07 流程控制
灵魂三问:
什么是?为什么要有?怎么用?
一 分支结构
1.1 什么是分支结构
就是根据条件的真和假来执行不同的子代码
1.2 为什么要有分支结构
当我们需要根据条件做不同的事情时,例如:今天下雨,我带伞,今天不下雨,我不带伞
1.3 怎么用分支结构
1.3.1 if语法
if 条件1: # 如果条件1的结果为True,就依次执行:代码1、代码2,......
代码1
代码2
......
elif 条件2: # 如果条件2的结果为True,就依次执行:代码3、代码4,......
代码3
代码4
......
else: # 其它情况,就依次执行:代码7、代码8,......
代码7
代码8
......
# 注意:
# 1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
# 2、条件可以是任意表达式,但执行结果必须为布尔类型
# 2.1在if判断中所有的数据类型也都会自动转换成布尔类型
# 2.2、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
# 2.3、其余均为True
接下来用一个嵌套来演示if的进阶用法,当我们需要一个条件作为前提时,就需要多个if来嵌套表示不同场景
#我们需要对90分以上的男生和女生做不同奖励,对80分以下的男生女生做不同惩罚
result = int(input("请输入你的成绩"))
sex = input("请输入你的性别")
if result>90:
if sex == "boy":
print("棒棒糖")
else:
print("冰激凌")
else:
if sex == "boy":
print("eat shit")
else:
print("get scolding")
扩展内容:深浅拷贝
当我们需要对两个内容相同的列表进行修改操作而不影响另一个列表时
浅拷贝:是把原列表的第一层的内存地址不加区分直接copy一份给新列表。
这种情况下,我们修改原列表内的不可变类型,新列表不会变
修改原列表的可变类型,新列表会跟着改变
a = [
'aa','bb',[1111]
]
b=a.copy()
print(id(a))
print(id(b))
>>>1729418126024
>>>1729419377288
a[2][0]=123
print(a)
print(b)
>>>['aa', 'bb', [123]]
>>>['aa', 'bb', [123]]
深拷贝:不可变类型的copy方式和浅拷贝一样
可变类型,会在内存中新开辟一个内存空间
a = [
'aa','bb',[111]
]
import copy
b = copy.deepcopy(a)
print(id(a))
print(id(b))
>>>2172376474312
>>>2172379870920
a[2][0]=222
print(a)
print(b)
>>>['aa', 'bb', [222]]
>>>['aa', 'bb', [111]]
结论,如果只进行只读操作,用浅拷贝,如果要进行写操作,用深拷贝
二 循环结构
2.1while循环
基本操作:输出1-4
i= 1
while i<5:#i<5是while执行子代码的条件,在执行完一次循环后回到开头重新进行判断
print(i)
i+=1
进阶操作:判断用户登录操作
username = "hz"
password = "123"
tag = True
while tag:
name = input("请输入你的用户名:")
word = input("请输入你的密码:")
if name==username and word == password:
print("登录成功")
tag = False
else:
print("账号或密码错误")
print("————end————")
两种终止循环的方式
#第一种,直接把循环条件改为假,在执行完本层循环后结束循环
while tag=True
tag=False
print("1")
#第二种,break,在break后面的代码不执行,直接跳出循环
while True
break
print("1")
跳过本次循环的方式
i = 0
while i<5:
i += 1
if i == 2:
continue #跳出本次循环,执行下一次循环
print(i)
while与else的连用
i = 0
while i<5:
i += 1
if i == 2:
continue
print(i)
else:
print("hz is dsg")
#执行else代码的条件:while循环结束后且没有被break打断的情况
day07 流程控制的更多相关文章
- day07深浅copy与流程控制
目录:流程控制 0:补充(了解) 短路运算:偷懒原则,偷懒到哪个位置,就把当前位置的值返回 深浅copy 1.循环之while循环 循环的语法与基本使用 死循环与效率问题 循环的应用 退出循环的两种方 ...
- 第10章 Shell编程(4)_流程控制
5. 流程控制 5.1 if语句 (1)格式: 格式1 格式2 多分支if if [ 条件判断式 ];then #程序 else #程序 fi if [ 条件判断式 ] then #程序 else # ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- PHP基础知识之流程控制的替代语法
PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch. 替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,e ...
- Python黑帽编程2.4 流程控制
Python黑帽编程2.4 流程控制 本节要介绍的是Python编程中和流程控制有关的关键字和相关内容. 2.4.1 if …..else 先上一段代码: #!/usr/bin/python # - ...
- 使用yield进行异步流程控制
现状 目前我们对异步回调的解决方案有这么几种:回调,deferred/promise和事件触发.回调的方式自不必说,需要硬编码调用,而且有可能会出现复杂的嵌套关系,造成"回调黑洞" ...
- [Java入门笔记] Java语言基础(四):流程控制
流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...
- node基础13:异步流程控制
1.流程控制 因为在node中大部分的api都是异步的,比如说读取文件,如果采用回调函数的形式,很容易造成地狱回调,代码非常不容易进行维护. 因此,为了解决这个问题,有大神写了async这个中间件.极 ...
- Shell入门教程:流程控制(1)命令的结束状态
在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...
随机推荐
- Canvas绘制圆点线段
最近一个小伙遇到一个需求,客户需要绘制圆点样式的线条. 大致效果是这样的: 思路一:计算并使用arc填充 他自己实现了一种思路,然后咨询我有没有更好的思路. 先看看他的思路是如何实现的,大致代码如下: ...
- workbench中如何导入.sql文件
在做电商管理系统的时候,需要使用 mysql 中的数据,在执行 app.js 文件时出现错误 于是将 mydb.sql 导入到workbench中,步骤如下: 1. 打开 workbench 软件,选 ...
- 用头发换JS的第一天
因为平时也在上班,这些都是在地铁上抽空开始看的,总结来说还是有一些收获存在,每次看都能发现一些新东西,废话不多说,开撸! JavaScript是一种网页编程语言,可以对网页的行为进行编程,简单来说HT ...
- Adobe Photoshop CC 2019 下载+安装教程
1. 安装包 链接: https://pan.baidu.com/s/1_w1SjGVjWNJ9nuTqEcaykg 提取码: xatq 2. 打开安装包 运行Set-up,选择语言,位置 ,选择继续 ...
- jmeter对数据库进行简单的压测
1.点击测试计划,再点击“浏览”,把JDBC驱动添加进来: 注:JDBC驱动一般的位置在java的安装地址下,路径类似于: \java\jre\lib\ext 文件为:mysql-connect ...
- Jenkins自动化测试脚本的构建
[准备环境] 自动化测试框架脚本 Linux下的Python环境 https://www.cnblogs.com/xinhua19/p/12836522.html [思路] 测试顺序是,测试通过 ...
- Ubuntu下安装PIL
Ubuntu下安装PIL 1)sudo apt-get install libjpeg-dev 2)sudo apt-get install libfreetype6-dev 3)sudo easy_ ...
- C# 9.0 新特性之只读属性和记录
阅读本文大概需要 2 分钟. 大家好,这是 C# 9.0 新特性系列的第 4 篇文章. 熟悉函数式编程的童鞋一定对"只读"这个词不陌生.为了保证代码块自身的"纯洁&quo ...
- JSON类库Jackson优雅序列化Java枚举类
1. 前言 在Java开发中我们为了避免过多的魔法值,使用枚举类来封装一些静态的状态代码.但是在将这些枚举的意思正确而全面的返回给前端却并不是那么顺利,我们通常会使用Jackson类库序列化对象为JS ...
- Javascript数组迭代精髓,拿去花
数组迭代 数组迭代是处理各数组的利器,编写代码时常常会用到,为我们提供了大大的便利.如果还不知道,真的别告诉别人你知道js哈哈. 以下迭代方法均不会改变原数组,带*为必选对象. 1.arr.forEa ...