day04-Python运维开发基础(位运算、代码块、流程控制)
# (7)位运算符: & | ^ << >> ~ var1 = 19 var2 = 15 # & 按位与 res = var1 & var2 """ 000 ... 10011 000 ... 01111 000 ... 00011 => 3 """ print(res) # | 按位或 res = var1 | var2 print(res) """ 000 ... 10011 000 ... 01111 000 ... 11111 31 """ # ^ 按位异或 (两个值不一样,返回真,否则返回假) res = var1 ^ var2 print(res) """ 000 ... 10011 000 ... 01111 000 ... 11100 """ # << 左移 res = 5 << 2 # 5 乘以 2的2次幂 res = 5 << 4 # 5 乘以 2的4次幂 print(res) """ 000 ... 101 000 ..10100 """ # >> 右移 res = 5 >> 1 # 5 除以 2的1次幂 res = 5 >> 2 # 5 除以 2的2次幂 print(res) """ 000 ... 101 000 ... 010 """ # ~ 按位非 (每一位取反,包含符号位) 结果:-(n+1) var = ~19 print(var) """ 原码:000 ... 10011 反码:000 ... 10011 补码:000 ... 10011 # 对补码进行按位非操作 000 ... 10011 111 ... 01100 给补码求原码 111 ... 01100 补码:111 ... 01100 反码:100 ... 10011 原码:100 ... 10100 -20 """ """ 总结: 所有运算符中 ** 的优先级最高的 所有运算符中 = 赋值运算符优先级最低 整体 一元运算符 > 二元运算符优先级 一元运算符: 同一时间,操作一个数字的 [-,~] 二元运算符: 同一时间,操作二个数字的 [+,*,/] () > not > and > or 乘除 > 加减 ( << >> ) > & > ^ > | 算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符 赋值运算符 是 把等号右边的表达式计算完毕之后,在赋值给等号左侧;用来收尾的 """ res = 5+5 << 6//3 is 40 and True """ 10 << 2 is 40 and True 40 is 40 and True True and True => True """ res = (5+5) << (6//3) is 40 and True print(res)
# ### 代码块 : 以冒号作为开始,用缩进来划分相同的作用域,整体是一个代码块 """作用域:作用的范围""" if 5 == 5: print(111) print(222) if 5 == 6: print(333) print(444) print(555) # 注意点: 具有相同的缩进 要么全是4个空格,要么全是一个缩进,要保持一致 # IndentationError if 5 == 5: print(666) print(777) # (了解内容 php js java ... ) if(5==5){ print(112) print(344) print(545454) }
# ### 流程控制 """ 流程: 代码执行的过程 流程控制:对代码执行过程的一种管控 流程控制的三大结构: (1) 顺序结构 : 默认代码从上到下依次执行 (2) 分支结构 : 四种 (3) 循环结构 : for .. in / while 分支结构: (1) 单项分支 (2) 双项分支 (3) 多项分支 (4) 巢状分支 """ # 单项分支 """ if 条件表达式: code1 code2 code3 ... 如果 条件表达式 成立,返回真 执行其中的代码块 """ lishiyun = "仙女" if lishiyun == "仙女": print("我会给它买好吃的") print("我会给它买好喝的") print("我会给它买好玩的") # 双项分支 (二选一) """ if 条件表达式: code1 code2 code3 ... else: code1 code2 code3 ... 如果条件表达式 成立 执行if代码块 如果条件表达式 不成立 执行else代码块 if代码块 => 真区间 else代码块 => 假区间 """ zhongzanlin = "屌丝" zhongzanlin = "高富帅" if zhongzanlin == "高富帅": print("它将拥有跑车") print("它将拥有豪宅") print("它将拥有美女") else: print("吃窝窝头") print("喝凉水") print("睡墙角") # input提示用户输入字符串,结果是字符串 # res = input("请输入您的姓名:") # print(res) ''' 提示用户输入用户名和密码: 如果用户名是admin , 并且密码是000 , 提示用户恭喜你,登陆成功 否则提示用户名或密码错误 ''' username = input("请输入您的用户名:") password = input("请输入您的密码:") if username == "admin" and password == "000": print("恭喜你,登陆成功") else: print("用户名或密码错误")
# ### 多项分支 (多选一) """ if 条件表达式1: code1 code2 elif 条件表达式2: code1 code2 elif 条件表达式3: code1 code2 ... else: code1 code2 如果条件表达式1成立 ,执行对应1号里面的代码块,否则向下执行 如果条件表达式2成立 ,执行对应2号里面的代码块,否则向下执行 如果条件表达式3成立 ,执行对应3号里面的代码块,否则向下执行 ... 如果都不成立 最后执行else 里面的代码块 elif : 0个 或者 多个 else : 0个 或者 1个 """ youqian = True youfang = True youche = False youyanzhi = False youtili = False if youqian == True: print("我要嫁给你1") elif youfang == True: print("我要嫁给你2") elif youche == True: print("我要嫁给你3") elif youyanzhi == True: print("我要嫁给你4") elif youtili == True: print("我要嫁给你5") else: print("你是个好人") print("<=====>") # ### 巢状分支 (单项分支 双项分支 多项分支的互相嵌套) if youqian == True: if youfang == True: if youche == True: if youyanzhi == True: if youtili == True: print("我嫁给你了脑弟") else: print("你补点大腰子,六味地黄丸") else: print("去韩国整整容") else: print("出门左拐是二路汽车,我给你车费.") #出题 height #女生找对象 # 男生在1米~1.5米之间 小强 你在哪里? # 男生在1.5~1.7米之间 没有安全感~ # 男生 1.7~ 1.8米之间 帅哥 留个电话 # 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗 # python 特有写法 """ height = float( input("请输入您的身高:") ) if 1 <= height < 1.5: print("小强 你在哪里?") elif 1.5 <= height < 1.7: print("没有安全感~") elif 1.7 <= height < 1.8: print("帅哥 留个电话") elif 1.8 <= height <= 2: print("你建议多一个女朋友吗") else: print("你的选项不存在") """ # 通用写法 height = float( input("请输入您的身高:") ) if height >= 1 and height < 1.5: print("小强 你在哪里?") elif height>=1.5 and height < 1.7: print("没有安全感~") elif height >= 1.7 and height < 1.8: print("帅哥 留个电话") elif height >=1.8 and height <=2 : print("你建议多一个女朋友吗") else: print("你的选项不存在")
# ### 循环结构 while """ while 条件表达式: code1 code2 当条件表达式成立True,就执行while循环体中的代码内容 """ # 打印1~100所有的数据 # (1)初始化变量i i = 1 # (2)循环的条件 while i<=100: # (4) 写上要执行的逻辑 print(i) #(3) 自增自减的值 i += 1 # i = i+1 """ # 代码解析: # 第一次循环 i = 1 i<=100 真的,条件成立, 执行循环里面的代码块 print(1) i+=1 i=>2 # 第二次循环 i = 2 i<=100 真的,条件成立, 执行循环里面的代码块 print(2) i+=1 i=>3 # 第三次循环 i = 3 i<=100 真的,条件成立, 执行循环里面的代码块 print(3) i+=1 i=>4 ... ... i = 101 i<=100 假的,条件不成立,循环终止 """ # 注意:死循环 """ while True: print(1) """ # 计算1~100的累加和? """ total += 1 total += 2 total += 3 total += 4 total += 5 total = 1+2+3+4+5+ ...... """ # 方法一 i = 1 total = 0 while i<=100: # 自定义的逻辑写在这 # print(i) total += i i+=1 print(total) """ i = 1 1<=100 条件成立 total += i total += 1 => total = total + 1 => total = 0 + 1 i+=1 => i=2 i = 2 2<=100 条件成立 total += i total += 2 => total = total + 2 => total = 0 + 1 + 2 i+=1 => i=3 i = 3 3<=100 条件成立 total += i total += 3 => total = total + 3 => total = 0 + 1 + 2 + 3 i+=1 => i=4 .... i = 100 100 <= 100 条件成立 total = 0 + 1 + 2 + 3 + 4 + 5 + ... + 100 当i = 101 101 <= 100 条件不满足 循环终止 到此为止 : 打印total = 5050 """ print("<===================>") # 方法二 sign = True i = 1 total = 0 while sign: total+=i i+=1 # 从100 加到 101 ,证明累加结束, 直接让sign = False 终止循环; if i == 101: sign = False print(total)
# ### 单循环练习 # 1.打印 一行十个小星星 """help 查看帮助文档""" """ help(print) print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") print("*",end="") """ i = 0 while i<10: print("*",end="") i+=1 print("<=============>") # 2.用一个变量打印出一行十个小星星 """ # 拼接字符串 var1 = "我爱你" var2 = "亲爱的姑娘" res = var1 + var2 print(res) var1 = "我爱你" var1 += "亲爱的祖国" # var1 = var1 + "亲爱的祖国" print(var1) """ i = 0 strvar = "" while i<10: # 编辑的代码写在这 # print("*",end="") strvar += "*" i+=1 print(strvar) # 3.打印一行十个小星星 奇数个打印★ 偶数个打印☆ # 方法一 i = 0 while i<10: # 写上自定义的逻辑 if i % 2 == 0: print("★",end="") else: print("☆",end="") i+=1 print("<====>") # 方法二 i = 0 strvar = "" while i<10: if i % 2 == 0: strvar += "★" else: strvar += "☆" i+=1 print(strvar) """ # strvar = "★☆★☆★☆★☆★☆" # 第一次 i = 0 i % 2 == 0 条件成立 strvar += "★" i+=1 => i = 1 # 第二次 i = 1 i % 2 == 0 条件不成立 strvar += "☆" i+=1 => i = 2 ... 以此类推,循环十次,拼接十个小星星; """ # 4.一个循环,打印十行十列小星星 """ ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** """ """ 0123456789 ********** 10 11 12 13 14 15 16 17 18 19 * * * * * * * * * * 20 21 22 23 24 25 26 27 28 29 * * * * * * * * * * 39 49 59 69 79 89 99 ... 代表的是第十颗星星 ,应该打印换行 ********************************************************************** """ i = 0 while i<100: # 打印星星 print("*",end="") # 当余数是9的时候,代表的是第十颗星星 if i % 10 == 9: # 打印换行 print() i+=1 """ 0 % 2 0 1 % 2 1 2 % 2 0 3 % 2 1 0 % 3 0 1 % 3 1 2 % 3 2 3 % 3 0 4 % 3 1 5 % 3 2 6 % 3 0 任意数和n进行取余 ,余数的范围是 0 ~ n-1 """ # 5.一个循环 打印十行十列隔列变色小星星 """ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ """ i = 0 while i<100: # 打印星星 # print("*",end="") if i % 2 == 0: print("★",end="") else: print("☆",end="") # 当余数是9的时候,代表的是第十颗星星 if i % 10 == 9: # 打印换行 print() i+=1 # 6.一个循环 打印十行十列隔行变色小星星 """ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ """ """ 任意数和n进行地板除,会出现n个相同的数字 0 // 3 0 1 // 3 0 2 // 3 0 3 // 3 1 ... 0 // 10 0 1 // 10 0 2 // 10 0 ... 9 // 10 0 有10个相同数字 0 10 // 10 1 11 // 10 1 12 // 10 1 ... 19 // 10 1 有10个相同数字 1 20 // 10 2 21 // 10 2 22 // 10 2 ... 29 // 10 2 有10个相同数字 2 30 // 10 3 31 // 10 3 32 // 10 3 ... 39 // 10 3 有10个相同数字 3 ... 90 // 10 9 91 // 10 9 92 // 10 9 .... 99 // 10 9 """ print("<==========>") i = 0 while i<100: # 打印星星 0 ~ 9 10 ~ 19 if i // 10 % 2 == 0: print("★",end="") else: print("☆",end="") # 当余数是9的时候,代表的是第十颗星星 if i % 10 == 9: # 打印换行 print() i+=1 """ # 0~9 ★★★★★★★★★★ # 10 ~ 19 ☆☆☆☆☆☆☆☆☆☆ # 20 ~ 29 ★★★★★★★★★★ # 30 ~ 39 ☆☆☆☆☆☆☆☆☆☆ .... ☆☆☆☆☆☆☆☆☆☆ 0 ~ 9 // 10 => 0 (10个0) ★★★★★★★★ 10 ~ 19 // 10 => 1 (10个1) ☆☆☆☆☆☆☆☆ """