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 既属于“条件”,也属于“循环 ...
随机推荐
- 如何在微信小程序中使用骨架屏
先上效果图
- JAVA多线程实现的三种方法
JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...
- Edge浏览器现已支持Tampermonkey(油猴)
Tampermonkey,Greasemonkey,这种扩展可以让我们的浏览器自动运行我们自己定义的脚本,然后就出现了相关网站(比如https://greasyfork.org/zh-CN)让大家在上 ...
- <OPTEE>Trusted Application结构分析
最近又开始和Trusted Zone打起了交道,需要把Linaro开发的开源安全系统optee os移植到实验室的老板子上.不过导师要求我先开发一个应用,在普通环境和安全环境分别有一个程序,称为hos ...
- Chrome启动选项
1. Chrome Options 这是一个Chrome的参数对象,在此对象中使用add_argument()方法可以添加启动参数,添加完毕后可以在初始化Webdriver对象时将此Options对象 ...
- Tensorflow中Tensor对象的常用方法(持续更新)
Tensor是Tensorflow中重要的对象.下面是Tensor的常用方法,后面还会写一篇随笔记录Variable的用法. 1. 生成一个(常)Tensor对象 >>>A = tf ...
- The following packages will be SUPERCEDED by a higher-priority channel是什么意思?
参考资料: https://stackoverflow.com/questions/42015732/the-following-packages-will-be-superceded-by-a-hi ...
- Java 源码刨析 - HashMap 底层实现原理是什么?JDK8 做了哪些优化?
[基本结构] 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的: JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的 ...
- OS_进程调度:C++实现
实验二.进程调度模拟实验 一.实验目的: 本实验模拟在单处理机环境下的处理机调度,帮助理解进程调度的概念,深入了解进程控制块的功能,以及进程的创建.撤销和进程各个状态间的转换过程. 二.实验内容: 进 ...
- PyCharm远程连接服务器简明教程
转自本人知乎(https://zhuanlan.zhihu.com/p/149040742) 由于实验室的GPU都是放在远程服务器上,因此一直使用MobaXterm利用SSH远程跑实验,但是MobaX ...