Python运算符&IF分支结构
一、表达式和运算符
1.表达式
操作数和运算符组成的式子就叫做表达式 比如: 1+1 作用:可以用于求值或者给变量赋值等.
2.运算符【掌握】
2.1. 算术运算符
+ - *【乘法】 /【除法】 %【求余或者取模】 **【求幂或者几次方】 //【取整】代码演示:
# + - * / %(求模或者取余) **(求几次幂) //(取整) 算术运算符 num1 = 12 num2 = 4 num3 = 7 print(num1 + num2) # 加法运算 print(num1 -num2) # 减法运算 print(num1 * num2) # 乘法运算 print(num1 / num2) # 除法运算 print(num1 % num3) # 取计算后的余数 5 print(num1 ** num2) # 取某个数的几次方 20736 print(num1 // num3) # 取计算后的商 1
2.2. 赋值运算符
简单赋值运算符:= 给一个变量进行赋值
复合赋值运算符:+= -= %= /= ... 给一个变量进行赋值,同时给变量进行相应的运算
代码演示:
#简单的赋值运算符 num = 98 # = 表示将98 赋给 num这个变量 print(num) # 复杂的赋值运算符 += -= /= %= num += 10 #相当于 num = num + 10 print(num) num -= 8 #相当于 num = num - 8 print(num) num *= 2 # 相当于 num = num * 2 print(num)
2.3. 关系【条件,比较】运算符
作用:比较大小,得到结果为布尔值【如果表达式成立,则返回True,如果不成立,则返回False】
> < >= <= ==【等号】 != 【不等于】使用场景:if语句,循环
代码演示:
# 常见的比较运算符 > < >= <= ==【等号】 != 【不等于】 a = 67 b = 23 c = 67 print(a > b) # 输出的结果是:True print(a < b) # 输出的结果是:False print(a >= c) # 输出的结果是:True print(a <= c) # 输出的结果是:True print(a == c) # 输出的结果是:True print(a != c) # 输出的结果是:False print(a != b) # 输出的结果是:True
2.4. 逻辑运算符
and : 与, 并且
or: 或, 或者
not:非, 取反
逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。
因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量.
而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,
# 逻辑运算符 and or not # and 表示与或者 并且的意思 #注意: 表达式两边都为真,则表达式为真 ''' print(True and True) #结果为True print(False and True) #结果为False print(True and False) #结果为False print(False and False) #结果为False ''' # or 表示或的意思 #注意:表达式中只要有一个为真,则整个表达式为真 """ print(True or False) #结果为True print(False or True) #结果为True print(False or False) #结果为False """ # not 表示非或者取反的意思 ''' print(not True) #结果为False print(not False) #结果为True print(not []) #结果为True 表示 []是False print(not {}) ''' ''' #练习: a = 12 b = 3 c = 10 print(a > b and b > c) ''' #bool类型的判断(记住) ''' 数字类型中,0 为False 其余的全部为True 字符串类型中, "" 或者 '' 为False None:为False list:[]为False dict:{}为False tuple:()为False ''' #and短路操作 # 1.and的两边都为真,则整个表达式为真 # 2.从表达式的左边往右依次进行判断,能得出结果直接返回结果,否则往后面继续判断. ''' print(0 and 3) # 0 print(10 and 3) # 3 print(11 and 0) # 0 ''' # or 短路操作 ''' 1.or的两边都为假,则整个表达式为假, 只要有一个为真,则整个表达式为真. 2.从表达式的左边向右依次进行判断,能得出结果直接返回结果,否则往后面继续判断 ''' a = 11 b = 4 print(3 or 0) # 3 print(0 or 3) # 3 print(0 or 0) # 0 print(0 or a > b) #True print(a < b or 0) # 0 # 练习: 判断2020年是否是闰年 ''' 1.闰年是能被4 整除 且不能被100整除 ''' year = 2020 print(year % 4 == 0 and year % 100 != 0) #True 表示2020年是闰年
2.5. 成员运算符和身份运算符
成员运算符:
in, not in
身份运算符:(了解)
is, is not
# 成员运算符 in not in print(2 in [23,12,2,34,54]) #True print("welcome" in "welcome to shenzhen") #True print("熊出没" in ["熊出没","喜洋洋与灰太狼","名侦探柯南"]) #True print("猪猪侠" not in ["蜘蛛侠","钢铁侠","黑侠","绿箭侠","煎饼侠"]) #True #判断输入的月份是否是31天 month = int(input("请输入月份:")) print(month in [1,3,5,7,8,10,12]) # 身份运算符(了解) is is not #判断内存地址是否相同 # id():获取内存地址 x = 8 y = 8 print(id(x)) print(id(y)) print(x is y) #True print(x is not y) #False
2.6. 位运算符【扩展】(了解)
a = 60 二进制 00111100
b = 13 二进制 00001101
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
---|---|---|
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1,相同时,结果为0 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
>> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
前提:将数字转换为二进制使用
&【按位与】 |【按位或】 ^【按位异或】 << 【左移】 >>【右移】
代码演示:
# 位运算符主要有 & | ^ << >> # a = 60 二进制 00111100 # b = 13 二进制 00001101 a = 60 # 00111100 b = 13 # 00001101 print(a & b) # 12 # 00001100 ====> 1* 2^3 + 1*2^2 = 12 print(a | b) # 61 # 00111101 ====> 1*2^5+1*2^4+1*2^3+1*2^2+1=32+16+8+4+1=61 print(a ^ b) # 49 # 00110001 ===>1 * 2^5+1*2^4+1 = 32+16+1 = 49 print(a << 2) # 240 # 00111100 ===>11110000===>1*2^7+1*2^6+1*2^5+1*2^4 = 128+64+32+16 = 240
二、分支【重点掌握】
1.代码结构
顺序结构:代码从上往下依次执行
分支结构:根据不同的条件,执行不同的语句
循环结构: 根据指定的条件,重复执行某段代码
2.分支结构-if语句
2.1简单if语句【单分支】
语法:
if 表达式:
执行语句
说明; 要么执行,要么不执行,当表达式成立的之后,则执行语句;如果表达式不成立,则直接跳过整个if语句继续执行后面的代码
注意:表达式为真(True)才执行语句
假:0 0.0 False " " ' ' None【空值】 [] {} ()
一般情况下,表达式使用都是比较运算符
代码演示:
# 单分支结构 a = 10 b = 4 if a > b: print("a>b成立") if a < b: print("a<b成立") print("测试单分支结构") #练习: age = int(input("请输入昊昊的年龄:")) if age > 18: print("可以做些成年人的事情了")
2.2if-else语句【双分支】
语法:
if 表达式:
执行语句1
else:
执行语句2
说明:如果表达式成立,则执行语句1;如果不成立,则执行语句2 if区间的语句和else区间的语句永远不会同时出现.
代码演示:
#从控制台输入一个数字,判断输入的数字是否是偶数 num = int(input("请输入数字:")) if num % 2 == 0: print("num是偶数") else: print("num不是偶数") age = int(input("请输入你的年龄:")) if age >= 18: print("成年了") else: print("未成年")
2.3if-elif-else语句【多分支】
语法:
if 表达式1:
执行语句1
elif 表达式2:
执行语句2
elif 表达式3:
执行语句3
。。。。。
else:
执行语句n
说明:实现了多选一的操作,会根据不同的条件从上往下来进行匹配,如果匹配上了,则执行对应的语句,然后直接结束整个if-elif语句,但是,如果所有的条件都不成立的话,则执行else后面的语句
注意:不管if-elif-else有多少个分支,都只会执行其中的一个分支
代码演示:
''' 90分以上:优秀 80-90:良好 60-80:还行 60以下:加油吧,骚年 ''' ''' score = int(input("请输入你的成绩:")) if score >= 90: print("优秀") elif score >= 80: print("良好") elif score >= 60: print("还行") else: print("加油吧!骚年") ''' ''' 1000000以上:高收入 500000以上:中产 200000以上:低产 50000以下:低保户 ''' money = int(input("请输入你的年收入:")) if(money > 1000000): print("高收入人群") elif(money > 500000): print("中产") elif(money > 200000): print("低产") elif(money > 50000): print("小低产") else: print("低保户")
2.4嵌套if语句
语法:
if 表达式1:
执行语句1
if 表达式2:
执行语句2
说明:if语句的嵌套,可以在单分支,双分支,多分支之间进行任意组合
代码演示:
#if嵌套语句 looks = input("请输入你的相貌:") money = int(input("请输入你的财富:")) skin = input("请输入你的皮肤:") if looks == "肤白嫩美大长腿": if money >= 120000: if skin == "吹弹可破": print("做我强哥的大宝贝吧!") else: print("少涂粉吧,保养一下") else: print("收入太少,还不够我吃软饭的.")q else: print("不够白,不够嫩,腿不够长") 注意:从语法角度来说,嵌套的层数没有任何的限制,但是,为了代码的可读性和可维护性,嵌套层数不要超过3层
总结:
1.python中常见的数据类型: int float str bool none list tuple dict set bytes 2.运算符: 算术运算符:+ - * / % ** // 比较运算符: > < >= <= ==(等于) !=(不等于) 赋值运算符: = (赋值) += -= *= /= %= 逻辑运算符: and(与) or(或) not(非) 成员运算符:in not in 身份运算符:is not is (了解) 位运算符: & | ^ >> << (了解) 3.分支结构 单分支: if 表达式: 执行语句 双分支: if 表达式: 执行语句1 else: 执行语句2 多分支: if 表达式1: 执行语句1 elif 表达式2: 执行语句2 elif 表达式3: 执行语句3 ..... else: 默认的执行语句 if嵌套: if 表达式1: if 表达式2: if 表达式3: 执行语句