【python基础】第06回 运算符和流程控制 1
本章内容概要
1.运算符
2.流程控制
本章内容详解
1.运算符
什么是运算符?
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+“
1.1 算数运算符
* ** // % == != 等 详情看上章
x = x + 1 # x += 1
x = x - 1 # x -= 1
1.2 比较运算符
> < == >= <= != 等
x == y
x != y
1.3 赋值运算符
简单赋值
x +=y 等效于 x = x + y
x -=y 等效于 x = x - y
链式赋值:
#赋值多个变量名
x = 10
y = x
z = y
链式赋值一行代码解决:x = y = z =10
交叉赋值:
m = 1
n = 2
#m n 交换
q = m
m = n
n = q
交叉赋值一行代码解决:m,n = n,m
解压赋值:
a, b, c = [11, 22, 33] # 遵循左右两边个数一致
a, *args = [1, 2, 3, 4, 5] # 不遵循
1.4 逻辑运算符
逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False
and 与
or 或
not 非
and 链接的多个条件必须都成立结果才成立(True)
or 链接的多个条件有一个成立结果就成立(True)
not 将条件取反(原本是对的就变成错的 如果是错的就变成对的)
and
可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为True的情况下,最终结果才为True。
1 == 1 and 2 > 10 and 3!=6 and True and 10 < 2
# False
or
可以用or连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果就为True,只有在所有条件的结果都为False的情况下,最终结果才为False
1 != 1 or 2==2 or False or 3 < 2 or 10 < 1
# True
not
print(not True)
print(not False)
# False
# True
混用and、or、not
# 三者如果混合使用 其实是有优先级的!!!用()来区分优先级
3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3 # 不合理的编写方式
# 如果需要三者混合使用 那么应该加上括号来区别优先级
(3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) # 合理
1.5 成员运算符
in 在什么什么之内
not in 不在什么什么之内
例:
l1 = ['jason', 'kevin', 'tony', 'oscar', 'jerry']
# 判断某个人名在不在班级学生名单中(判断某个个体在不在某个群体内)
# print('jason' in l1) # True
# print('ja' in l1) # False
# print('jason kevin' in l1) # False
'''列表在做成员运算的时候最小单位是数据值整体 不能再拆分也不能合并'''
# s1 = 'hello big baby!'
# print('h' in s1) # True
# print('he' in s1) # True
# print('hell' in s1) # True
# print('hello' in s1) # True
'''字符串在做成员运算的时候最小单位是单个字符 也可以增加字符个数'''
d1 = {'name': 'jason', 'pwd': 123}
print('jason' in d1) # False
print(123 in d1) # False
print('name' in d1) # True
print('pwd' in d1) # True
'''字典在做成员运算的时候只有K会参与运算 V默认不暴露给外界'''
1.6 身份运算符
is 判断数据值的内存地址是否一致
== 判断数据值得值是否一致 地址无所谓
id() 该方法会返回一串数字 相当于内存地址
例:
l1 = [11, 22, 33, 44]
l2 = [11, 22, 33, 44]
print(id(l1)) # 2768135836544
print(id(l2)) # 2768135831424
print(l1 == l2) # True 只判断值
print(l1 is l2) # False 判断内存地址
"""
值相等 内存地址可能不等
内存地址相等 值肯定相等(单次程序中)
"""
python内存优化
# l1 = 10
# l2 = 10
# print(id(l1)) # 140707857893312
# print(id(l2)) # 140707857893312
"""python针对数据量比较小的并且经常使用的数据会做内存优化:小整数池"""
l1 = 9999999
l2 = 9999999
print(id(l1), id(l2)) # 1271940823728 1271940823728
"""有时候IDE编辑工具也会做更多的优化处理(上述代码使用解释器直接运行 地址不一样)"""
2.流程控制
2.1 流程控制理论
流程控制的概念
本质就是事物的执行流程 事物的执行流程总共就三种
1.顺序结构
从上往下依次执行,之前我们写的代码都是顺序结构
2.分支结构
根据条件的不同执行不同的代码,用到if判断
3.循环结构
根据条件的判断绝对是否一直做某件事,用到while与for
2.2 流程控制结构
1.python中使用代码的缩进来表示代码的从属关系
缩进的代码是否运行取决于上面没有缩进的父代码(结尾有冒号)
2.缩进量其实没有要求 只要缩进了即可
但是为了美观 一般推荐使用四个空格
3.并不是所有的代码都可以拥有子代码
if关键字 else关键字 elif关键字 ( elif else不能单独使用)
4.同属于一个父代码的多行子代码应该保证相同的缩进量
如果代码缩进了 那就必须往上找一个缩进量比它小的代码作为父代码
这个父代码如果可以拥有子代码 那么没有问题 不可以则直接报错
5.相同缩进量的代码彼此之间没有主次之分 都是按照顺序依次执行
2.2.1 顺序结构
从上往下依次执行,之前我们写的代码都是顺序结构
流程图
2.2.2 分支结构
在python中如果想要编写分支结构 那么需要使用关键字if,分支结构就是根据条件判断的真假去执行不同分支对应的子代码
2.2.2.1 单if 分支
if 条件:
条件成立执行执行的代码(子代码)
# 条件可以是布尔值 也可以是表达式
# 判断的条件可以是一个 也可以是有逻辑运算符连接的多个
例:
# 1.定义女人的年龄
age = 28
# 2.判断女人的年龄
if age < 30:
print('小姐姐你好呀!!!')
2.2.2.2 if...else 分支
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
# 判断的条件可以是一个 也可以是由逻辑运算符连接的多个
例:
# 模拟用户登录功能
# 1.获取用户名和密码
name = input('name>>>:')
password = input("password>>>:")
# 2.判断用户名和密码是否正确(目前只能写死)
# if name == 'zhang' and password == 123: # python中不同数据类型之间无法直接做比较
if name == 'zhang' and password == '123':
print("贵宾一位")
else:
print("滚蛋")
流程图
2.2.2.3 if...elif...else 分支
if...elif...else分支
if 条件1:
条件1成立执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述所有的条件都不成立执行的子代码
# if elif else三者连用 永远只会走一个分支
# elif 和 else都不能单独使用 必须结合if
例:
# 如果成绩大于90打印优秀 大于80打印良好 大于70打印一般 大于60打印及格 其他打印挂科
score = 92
if score > 90:
print("优秀")
elif score > 80:
print("良好")
elif score > 70:
print("一般")
elif score > 60:
print("及格")
else:
print("挂科")
流程图
2.2.2.4 if的嵌套使用
例:
# 在大街上看到一个漂亮的背影 上去要微信
# 如果要微信成功了 则邀请她去看电影(她可能拒绝 也可能接受)
# 如果接受了则继续吃饭 逛街 等待天黑!!!
# 1.先定义出各种条件
is_wechat = True
is_movie = True
is_agree = False
is_xxx = True
# 2.条件判断
if is_wechat:
print('要微信成功了')
if is_movie:
print('要去看电影了 找个后排座位 视野好')
if is_agree and True:
print('吃饭 逛街 天黑了!!!')
else:
print('你个臭流氓!!!')
else:
print('看电影多无聊!!!')
else:
print('你个癞蛤蟆!!!')
流程图
作业
1.女人的年龄>=18并且<22岁并且身高>170并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨好
# 1.定义女人年龄,身高,体重
age = 18
height = 180
weight = 90
is_beautiful = True
# 2.判断
if 18 <= age < 22 and height > 170 and weight < 100 and is_beautiful:
print("表白")
else:
print("阿姨好")
2.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
# 1.定义用户
name = input("请输入您的用户名>>>:")
# 2.判断
if name == 'jason':
print("超级管理员")
elif name == 'tom':
print("普通管理员")
elif name == 'jack' or name == 'rain':
print("业务主管")
else:
print("普通用户")
3.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
# 先定义黑名单
black_name_list = ['jason', 'kevin', 'tony']
# 获取用户名
username = input("username>>:")
# 判断
if username not in black_name_list:
password = input("password>>:")
if username == 'zhang' and password == '123':
print("登录成功")
else:
print("账号或密码错误")
else:
print("你已加入黑名单")
【python基础】第06回 运算符和流程控制 1的更多相关文章
- 『Python基础』第6节:流程控制之while循环
在生活中经常遇到循环的事情, 比如循环列表播放歌曲等. 在Python中, 也有循环, 就是其流程控制语句while. 1. 基本循环 while 条件: 循环体 # 如果条件为真, 那么就执行循环体 ...
- Python基础一(格式化输出、流程控制)
(1)格式化输出(%% 第一个% 转译) # 格式化 输入 输出 name = input("Name:") age = input("Age:") job = ...
- 【python基础】第07回 运算符和流程控制 2
本章内容概要 1.逻辑运算符补充 2.循环结构 本章内容详解 1.逻辑运算符补充 两边都不为0的情况 or 直接取前面的值 and 直接取后面的值如果存在0的情况 and 直接取0 or 直接取非0 ...
- python基础02—运算符与流程控制
运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...
- Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
- Python基础篇(格式化输出,运算符,编码):
Python基础篇(格式化输出,运算符,编码): 格式化输出: 格式:print ( " 内容%s" %(变量)) 字符类型: %s 替换字符串 %d 替换整体数字 ...
- 第二十二节:Java语言基础-详细讲解位运算符与流程控制语句
位运算符(二进制位运算) 运算符 运算 例子 << 左移 3 << 2 = 12 --> 3 * 2 * 2 =12 >> 右移 3 >> 1 = ...
- python 运算符与流程控制
运算符与流程控制 运算符 赋值运算 用'='表示,'='的左边只能是变量 算术运算 +.-.*:加.减.乘 /:除法运算,运算结果为浮点数 //:除法运算,运算结果为整数(商) %:求余 **:求幂 ...
- 格式化输出的三种方式,运算符及流程控制之if判断
''' 格式化输出的三种方式,运算符及流程控制之if判断 ''' # 格式化输出的三种方式 # 一.占位符 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式 比如要求用户输入用户名和年龄 ...
随机推荐
- gnome shell 扩展命令行开启和关闭
#关闭 gnome-shell-extension-tool -d 扩展名 #开启 gnome-shell-extension-tool -e 扩展名 例如: gnome-shell-extensio ...
- vue-mobile-template 前端开源框架
开源项目的由来 某天因公司业务需求,想寻找一款H5移动端的模板进行二次开发.但搜遍整个HUB都没法找到合适的空模板进行二次开发,所以心血来潮,于是有了 vue-mobile-template . 介绍 ...
- 【kubernetes 问题排查】使用 kubeadm 部署时遇到的问题
引言 再使用kubeadm部署集群时会多少遇到一些问题,这里做下记录,方便后面查找问题时有方向,同时也为刚要入坑的你指明下方向,让你少走点弯路 问题汇总 The connection to the s ...
- 在Ubuntu安装eclipse环境
下载准备 1安装jdk,笔者安装的是jdk-8u121-linux-x64 2安装eclipse,下载地址:http://www.eclipse.org/downloads/packages/ecli ...
- 浅谈Java-String到底是值传递还是引用传递?
参数传递 Java 中的参数传递分为 "值传递""引用传递" 如果你学过 C/C++应该很好理解,就是所谓的 "值传递" 和 "指 ...
- 老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三)
老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(三) 前言 上一篇文章老生常谈系列之Aop--Aop的经典应用之Spring的事务实现分析(二)从三个问题导入,分析了Spring ...
- css自定义省略实例2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# 随机给一个全部信息都未知的类类型,如何获取该类的类名、属性个数、属性名、属性的数据类型、属性值?
一.场景假设 假设现在有一个泛型类T的实例对象t,该T类的全部信息都未知. 要求:打印输出实例对象t的类名.属性个数.属性名.属性的数据类型.属性值. 二.解决问题 1.我们根据输出的内容要求定义一个 ...
- UART串口及Linux实现
UART,全称Universal Asynchronous Receiver Transmitter,通用异步收发器,俗称串口.作为最常用的通信接口之一,从8位单片机到64位SoC,一般都会提供UAR ...
- 手脱NsPacK壳
1.查壳 使用PEiD未能检测到壳信息,这时,我们更换其他工具 从图中可以看到壳的信息为[NsPacK(3.x)[-]] 2.百度壳信息 北斗程序压缩(Nspack)是一款压缩壳.主要的选项是:压缩资 ...