老男孩自动化运维开发第2天
目录导航:
1. 容器类型强制转换
2. 二级容器
3. 算数运算符
4. 赋值运算符与成员运算符
5. 身份运算符
6. 位运算符
7. 代码块
8. 流程控制
9. 多项分支
10. 循环分支
11. 单循环练习
12. 字符串的相关操作
13.多循环练习
14. for 循环
var1 = "今天天气转冷了" var2 = [1,2,3] var3 = (4,5,6) var4 = {"a","b","c"} var5 = {"a":1,"b":2} # (1)str 强制转换成字符串 """在原数据类型的两边套上引号""" res = str(var2) res = str(var3) res = str(var4) print(res,type(res)) # repr 在不转移字符串的情况下,原型化输出 res_new = repr(res) print(res_new) # (2)list 强制转换成列表 """ 如果是字符串,那么就是把每一个字符都当成新的元素组合成列表 如果是list , tuple ,set 就是在原数据类型的两边改成[] 如果是字典 , 只是获取字典的键组成列表 """ res = list(var1) res = list(var3) res = list(var4) res = list(var5) print(res,type(res)) # (3)tuple 强制转换成元组 """ 如果是字符串,那么就是把每一个字符都当成新的元素组合成元组 如果是list , tuple ,set 就是在原数据类型的两边改成() 如果是字典 , 只是获取字典的键组成元组 """ res = tuple(var1) res = tuple(var2) res = tuple(var5) print(res,type(res)) # (4)set 强制转换成集合 """ 如果是字符串,那么就是把每一个字符都当成新的元素组合成集合 如果是list , tuple ,set 就是在原数据类型的两边改成{} 如果是字典 , 只是获取字典的键组成集合 """ res = set(var1) res = set(var2) res = set(var5) print(res,type(res))
外面是一个容器类型数据,里面的元素还是一个容器类型的数据
# 二级列表 lst = [1,2,3,4,[5,6,7,8]] # 二级元组 tup = (1,2,3,(7,8,9)) # 二级集合 setvar = {"a","b",(10,11,12)} # 二级字典 dic = {"a":1,"b":2,"c":{"d":3,"e":4}} # 四级容器 container = [1,2,3,(4,5,6,[7,89,9,{"a":1,"b":"王文"}])] res = container[-1] print(res)# (4, 5, 6, [7, 89, 9, {'a': 1, 'b': '王文'}]) res2 = res[-1] print(res2) # [7, 89, 9, {'a': 1, 'b': '王文'}] res3 = res2[-1] print(res3) # {'a': 1, 'b': '王文'} res4 = res3["b"] print(res4) # 王文 # 简写 res = container[-1][-1][-1]["b"] print(res)
等长的二级容器
# 等长的二级容器 """ (1) 首先要求里面的每一个元素都是容器 (2) 要求容器里面的元素个数都是相同的 """ lst = [(1,2,3),["a","b","c"],{1.1,2.3,False}] tup = ([1,2],(3,4)) # ### 强制转换成字典 """ (1) 需要是等长的二级容器 (2) 里面的元素必须是2个 """ # (1)外面的容器是列表 lst = [["a",1],("b",2)] #(推荐) # 如果是字符串,长度只能是2个,有一定的局限性(不推荐使用) lst = ["a2","c3"] # c3344 # 虽然使用集合在语法上不会报错,但是有语义上的毛病(不推荐使用) lst = [{"a",3},{"b",4}] dic = dict(lst) print(dic) # (2)外面的容器是元组 tup = (["a",1],("b",2)) #(推荐) dic = dict(tup) print(dic) # (3)外面的容器是集合 setvar = {("e",6),("f",7)} dic = dict(setvar) print(dic) """ Number => int float bool complex 容器 => str list tuple set dict 这些强转函数默认在不传值的时,都会创建一个当前数据类型的值 """ res = dict() print(res)
var1 = 7 var2 = 4 # + res = var1 + var2 print(res) # - res = var1 - var2 print(res) # * res = var1 * var2 print(res) # / 结果永远是小数 res = var1 / var2 res = 8 / 4 print(res) # // 地板除 # 如果被除数或者除数是整数,那么结果也是整数 res = 8 // 4 # 如果被除数或者除数是小数,那么结果也是小数 res = 8 // 4.0 print(res) # % 取余 res = var1 % var2 res = 81 % 4 # 先计算正常的余数,然后根据被除数身上的符号,决定余数的符号是正还是负 res = -81 % 4 # -1 + 4 = 3 res = 81 % -4 # 1 + (-4) = -3 # 如果被除数和除数都是负号,就是单纯的在余数的身上套上负号即可; res = -81 % -4# -1 print(res) # ** 幂运算 res = 3 ** 2 res = 3 ** 3 print(res) # (2)比较运算符: > < >= <= == != """只有两个结果,要么是True 真的,要么是False 假的""" # > res = 15 > 8 print(res) # < res = 15 < 8 print(res) # >= res = 15 >= 15 print(res) # <= res = 15 <= 15 print(res) # == 比较等号两边的值是不是相同 """ a = 5 从右向左看,把5这个值赋值给变量a a == 5 比较,比较等号两边的这个值是不是一样的,如果一样,返回True,反之返回False """ res = 5 == 5 print(res) # != 比较等号两边的值是不是不相同 res = 6 != 10 print(res)
# = 赋值运算符
var1 = 17
var2 = 4
# +=
# var1 += var2
# '''var1 = var1 + var2'''
# print(var1)
# -=
# var1 -= var2
# '''var1 = var1 - var2'''
# print(var1)
# *=
# var1 *= var2
# '''var1 = var1 * var2'''
# print(var1)
# /=
# var1 /= var2
# '''var1 = var1 / var2'''
# print(var1)
# //=
# var1 //= var2
# '''var1 = var1 // var2'''
# print(var1)
# %=
# var1 %= var2
# '''var1 = var1 % var2'''
# print(var1)
# **=
# var1 = 9
# var2 = 2
# var1 **= var2
# '''var1 = var1 ** var2'''
# print(var1)
# (4)成员运算符: in 和 not in (针对于容器型数据)
# 字符串
"""必须是一个连续的片段"""
strvar = "我爱你,亲爱的菇凉,一看到你,我就心慌"
res = "爱" in strvar
res = "亲爱的" in strvar
res = "你到" in strvar
print(res)
# list tuple set
listvar = ["戴鹏","谢岳鹏","余文杰","钟平福","李辉","叶渊明"]
res = "谢岳鹏" in listvar
res = "余文杰" not in listvar
setvar = {"张俊文","黄其新","李建波","陈勇"}
res = "张俊文" not in setvar
tuplevar = ("猴闪","周青","郑飞")
res = "猴闪" not in tuplevar
print(res)
# dict
"""在字典当中,成员运算符判断的是字典的键,不是值"""
dictvar = {"花和尚":"鲁智深","智多星":"无用","鼓上骚":"石阡"}
res = "鲁智深" in dictvar
res = "智多星" in dictvar
res = "鼓上骚" not in dictvar
print(res)
is 和 is not (检测两个数据在内存当中是否是同一个值)
# int : -5 ~ 正无穷 var1 = 18 var2 = 18 # 比较两个变量指向的这个值是不是同一个(即地址相同) res = var1 is var2 print(res) # float: 非负数 var1 = 5.17 var2 = 5.17 res = var1 is not var2 print(res) # complex 实数+ 虚数永远不相同(只有虚数的情况下例外) var1 = 7j var2 = 7j res = var1 is var2 print(res) # bool 只要值相同就一样 var1 = True var2 = False res = var1 is not var2 print(res) # 容器类型数据 lst1 = [1,2] lst2 = [1,2] print(lst1 is lst2) print("<=============================>") # ### (6)逻辑运算符: and or not """ and 逻辑与 or 逻辑或 not 逻辑非 """ # 逻辑与 and """全真则真,一假则假""" res = True and True # True res = True and False # False res = False and False # False res = False and True # False print(res) # 逻辑或 or """一真则真,全假则假""" res = True or True # True res = True or False # True res = False or True # True res = False or False# False print(res) # 逻辑非 not (真变假,假变真) res = not True res = not False print(res) # 逻辑短路 (后面的代码不执行) """ (1)True or 表达式 (2)False and 表达式 """ True or print(123) False or print(123) False and print(456) True and print(456) res = True or 7 res = 18 or True res = False and 90 res = 0 and True res = 18 and 0j print(res) # 逻辑运算符的优先级 # () > not > and > or res = 5 or 6 and 7 # 5 or 7 => 5 res = (5 or 6) and 7 # 5 and 7 => 7 res = not (5 or 6 ) and 7 # not 5 and 7 => False and 7 print(res) # 只有True or 表达式,在多个表达式的情况下仍然短路,但是False and 表达式,在多个表达式的情况下不一定短路 res = 1>2 and 3<4 or 5<6 and 7<8 # False and True or True and True => False or True => True res = True or 3>4 and 5<6 or 5>100 # True or False and True or False => True or False or False => True print(res)
& | ^ << >> ~
# & 按位与 var1 = 19 var2 = 15 res = var1 & var2 print(res) """ 000 ... 10011 000 ... 01111 000 ... 00011 """ # | 按位或 var1 = 19 var2 = 15 res = var1 | var2 print(res) """ 000 ... 10011 000 ... 01111 000 ... 11111 """ # ^ 按位异或 (两个值不一样,返回True,反之,返回假(比如都是0 或者 都是1)) var1 = 19 var2 = 15 res = var1 ^ var2 print(res) """ 000 ... 10011 000 ... 01111 11100 """ # << 左移 乘法:5 * 2的3次幂 res = 5 << 3 print(res) """ 000 ... 101 000 ..10100 """ # >> 右移 除法:5 // 2的1次幂 res = 5 >> 1 print(res) """ 000 ... 101 000 ... 001 """ # 按位非 公式:-(n+1) res = ~-11 print(res) """ 运算符的优先级: 运算符优先级最高的是 ** 幂运算 运算符优先级最低的是 = 赋值运算符 整体来看: 一元运算符 > 二元运算符 一元运算符 : 同一时间,操作一个数字的 [~ , -] 二元运算符 : 同一时间,操作二个数字的 [+ - * / ... ] 二元运算符: 整体用() 来提升运算的优先级 逻辑运算中: () > not > and > or 算数运算符: 乘除 > 加减 按位运算符: << >> > & > ^ > | 大体来看: 算数运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符 赋值运算符最后收尾,用来接收最后运算的数据 """ res = 5+5 << 6 // 3 is 40 and True # res = 10 << 2 is 40 and True # res = 40 is 40 and True # res = True and True => True print(res) # 用括号来提升优先级,让别人看懂代码 res = (5+5) << (6 // 3) is 40 and True
以冒号最为开始,用缩进来划分同一个作用域,这个整体叫做代码块
"""作用域:作用的区域""" """ 一个tab 大概是4个空格的距离 """ if 5 == 5: print(111) print(222) """ if 5 == 7: print(333) print(444) print(555) print(666) """ """ 在代码块中, 要么全部使用\t缩进 要么全部使用4个空格来表达缩进 不能\t和空格混合在一起使用 即使在外观上来看,距离相同,也不是一个代码块; """ # php (了解) """ if(5 == 5){ print(333) print(444) print(666) } """
""" 流程:代码执行的过程 流程控制:对代码执行的过程一种管控 三大结构: (1) 顺序结构: 代码默认从上到下依次执行 (2) 分支结构: 4种分支 (3) 循环结构: while for 分支结构: (1) 单项分支 (2) 双项分支 (3) 多项分支 (4) 巢状分支 """ # 单项分支 """ if 条件表达式: code1 code2 如果条件表达式 成立, 就执行对应的代码块,反之,不执行 """ chenzhenlian = "美女" if chenzhenlian == "巫婆": print("给她买倩碧") print("给她买香奈儿") print("给她买香迪奥") print("给她买肾宝") print("给他买包,因为包治百病") # 双项分支 (二选一) """ if 条件表达式: code1 code2 else: code3 code4 如果条件表达式 成立, 就执行if这个代码块中的内容 如果条件表达式 不成立,就执行else这个代码块中的内容 if 对应的代码块也叫作 真区间 else 对应的代码块也叫作 假区间 """ shisongya = "穷鬼" if shisongya == "有钱人": print("我就嫁给他") else: print("你是个好人") # ### 模拟网站登录 """ 账户: admin 密码: 123 如果账户密码满足条件, 就登录成功 否则登录失败 """ # input 等待用户输入字符串 """ res = input("请输入您的姓名:") print(res,type(res)) """ username = input("请输入您的账户:") password = input("请输入你的密码:") if username == "admin" and password == "123": print("登录成功") else: print("登录失败")
""" if 条件表达式1: code1 elif 条件表达式2: code2 elif 条件表达式3: code3 else: code4 先判定条件表达式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 = 1.7 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("帅哥 你建议多一个女朋友吗") """ # 方法二 通用写法 height = float( input("请输入您的身高:") ) # print(height,type(height)) 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 条件表达式: code1 code2 ... 如果条件表达式成立,就执行循环体中的代码,反之不执行 """ # 打印 1~100 # (1)初始化一个变量i i = 1 # (2)写上循环的判断条件 while i<=100: # (4) 写上对应的逻辑 print(i) # (3)自增自减的i值 i += 1 # i = i + 1 """ 代码解析: 先初始化变量i = 1 # 第一次循环 i = 1 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(1) i += 1 => i = 2 # 第二次循环 i = 2 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(2) i += 1 => i = 3 # 第三次循环 i = 3 , i <= 100 条件满足,返回True ,执行循环体 print(i) => print(3) i += 1 => i = 4 .... .... 以此类推 当 i = 101 , i <= 100 条件不满足,返回False , 终止循环. """ # 计算1~100的累加和 # 方法一 i = 1 total = 0 while i<=100: total += i i+=1 print(total) """ # 代码解析: # 第一次循环 i=1 i<=100 条件满足,返回True total += i => total = total + i => total = 0 + 1 , i+=1 => i = 2 # 第二次循环 i=2 i<=100 条件满足,返回True total += i => total = total + i => total = 0 + 1 + 2 , i+=1 => i = 3 # 第三次循环 i=3 i<=100 条件满足,返回True total += i => total = total + i => total = 0 + 1 + 2 + 3 , i+=1 => i = 4 ... 依次循环 当i = 101的时候 i<=100 条件不满足,返回False ,循环终止 total = 0 + 1 + 2 + 3 + ... + 100 """ # 死循环 """ while True: print(1) """ # 方法二 sign = True i = 1 total = 0 while sign: total += i i+=1 # 手动判断如果i 已经加到了101 ,就意味着循环应该终止了; 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="") """ # 用while 改写 i = 0 while i<10: print("*",end="") i+=1 print() # (2)用变量拼接字符串的形式,打印一行十个小星星 i = 0 strvar = "" while i<10: strvar += "*" i+=1 print(strvar) # (3)打印一行十个小星星 奇数个打印★ 偶数个打印☆ i = 0 while i < 10: if i % 2 == 0: print("★",end="") else: print("☆",end="") i+=1 print() # (4)用 一个循环 打印十行十列小星星 """ ********** ********** ********** ********** ********** ********** ********** ********** ********** ********** """ """ 0 % 2 = 0 1 % 2 = 1 2 % 2 = 0 3 % 2 = 1 0 % 3 = 0 1 % 3 = 1 2 % 3 = 2 3 % 3 = 0 0 % 8 = 0 1 % 8 = 1 2 % 8 = 2 3 % 8 = 3 4 % 8 = 4 5 % 8 = 5 6 % 8 = 6 7 % 8 = 7 8 % 8 = 0 9 % 8 = 1 10 % 8 = 2 任意数和n进行取余,余数范围: 0~(n-1) 0123456789 ********** 10111213141516171819 * * * * * * * * * * 20212223242526272829 * * * * * * * * * * ... 90919293949596979899 * * * * * * * * * * 9 ~ 99的时候 要添加换行 """ i = 0 while i<100: # 打印星星 print("*",end="") # 打印换行 if i % 10 == 9: print() i+=1 # (5)一个循环 打印十行十列隔列变色小星星(一个循环) """ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ ★☆★☆★☆★☆★☆ """ i = 0 while i<100: # 打印星星 if i % 2 == 0: print("★",end="") else: print("☆",end="") # 打印换行 if i % 10 == 9: print() i+=1 # (6)一个循环 打印十行十列隔行变色小星星(一个循环) """ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ ★★★★★★★★★★ ☆☆☆☆☆☆☆☆☆☆ """ """ 0 // 3 = 0 1 // 3 = 0 2 // 3 = 0 3 // 3 = 1 4 // 3 = 1 5 // 3 = 1 6 // 3 = 2 0 // 5 = 0 1 // 5 = 0 2 // 5 = 0 3 // 5 = 0 4 // 5 = 0 5 // 5 = 1 6 // 5 = 1 7 // 5 = 1 8 // 5 = 1 9 // 5 = 1 任意数和n进行地板除,会出现n个相同的数字 0 // 10 = 0 1 // 10 = 0 2 // 10 = 0 3 // 10 = 0 4 // 10 = 0 5 // 10 = 0 6 // 10 = 0 7 // 10 = 0 8 // 10 = 0 9 // 10 = 0 10 // 10 = 1 11 // 10 = 1 12 // 10 = 1 13 // 10 = 1 14 // 10 = 1 15 // 10 = 1 16 // 10 = 1 17 // 10 = 1 18 // 10 = 1 19 // 10 = 1 20~29 => 10个相同的2 30~39 => 10个相同的3 ... 90~99 => 10个相同的9 相同的数字分别从0~9 """ i = 0 while i<100: # 打印星星 if i // 10 % 2 == 0: print("★",end="") else: print("☆",end="") # 打印换行 if i % 10 == 9: print() i+=1
# (1)字符串的拼接 + strvar1 = "我恨你," strvar2 = "你为什么不爱我" res = strvar1 + strvar2 print(res) # += res += "!!!" # res = res + "!!!" print(res) # (2)字符串的重复 * strvar = "重要的事情说三遍!" res = strvar * 3 print(res) # (3)字符串跨行拼接 \ strvar = "sdfsjdfjsdfjshjfdhjsdfjsdfsdfsdfffffffffffffffffffffffffffffffffffffffffffffff" \ "sdfsdf sdfsdfsdfsfdsdfsfsd" print(strvar) # (4)字符串的索引 # 正向索引 0 1 2345 strvar = "我的baby" # 逆向索引 -6-5-4-3-2-1 print(strvar[3],strvar[-3]) # (5)字符串的切片: 截取 # 语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值] # (1)[开始索引:] 从开始索引截取到字符串的最后 # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1) # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1) # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符 # (5)[:]或[::] 截取所有字符串 # (1)[开始索引:] 从开始索引截取到字符串的最后 strvar = "如果遇到你是一种错,那我宁愿一错再错" res = strvar[2:] print(res) # (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1) res = strvar[:4] print(res) # (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1) res = strvar[11:14] # 我宁愿 11~13 print(res) # (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符 res = strvar[::2] # 正向截取 # 0 2 4 6 8 10 12 14 .... res = strvar[::-1] # 逆向截取 # -1 -2 -3 -4 -5 -6 -7 ... print(res) # (5)[:]或[::] 截取所有字符串 str_new = strvar[:] str_new = strvar[::] print(str_new)
# (1)打印十行十列小星星 (用两个循环) j = 0 while j < 10: # 打印一行十个小星星 ********** i = 0 while i<10: print("*",end="") i+=1 # 打印换行 \n print() j+=1 # (2)打印十行十列隔列换色小星星 # ★☆★☆★☆★☆★☆ j = 0 while j < 10: # 打印一行十个小星星 ********** i = 0 while i<10: if i % 2 == 0: print("★",end="") else: print("☆",end="") i+=1 # 打印换行 \n print() j+=1 # (3)打印十行十列隔行换色小星星 j = 0 while j < 10: # 打印一行十个小星星 ********** i = 0 while i<10: if j % 2 == 0: print("★",end="") else: print("☆",end="") i+=1 # 打印换行 \n print() j+=1 # (4)99乘法表 # 方向一 (升序 1-9) i = 1 while i <= 9: # 打印表达式 j = 1 while j<=i: # print(i,j) print("%d*%d=%2d " % (i,j,i*j),end="") j+=1 # 打印换行 print() i+=1 # 方向二 (降序 9-1) print("<===>") i = 9 while i >= 1: j = 1 while j<=i: # print(i,j) print("%d*%d=%2d " % (i,j,i*j),end="") j+=1 print() i-=1 # (5)100 ~ 999 找吉利数字 111 222 123 321 888 ... """ // 地板除可以获取到一个数高位 % 取余可以获取到一个数的低位 789 个位: 789 % 10 => 9 十位: 789 // 10 % 10 => 8 百位: 789 // 100 => 7 """ # 方法一 i = 100 while i <= 999: # 个位 gewei = i % 10 # 十位 shiwei = i // 10 % 10 # 百位 baiwei = i // 100 if shiwei == gewei and shiwei == baiwei : print(i) elif shiwei == gewei - 1 and shiwei == baiwei + 1: print(i) elif shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i+=1 print("<====>") # 方法二 i = 100 while i<=999: # 强转成字符串 num = str(i) # 通过下标获取个十百 gewei = int( num[-1] ) shiwei = int(num[-2]) baiwei = int(num[-3]) if shiwei == gewei and shiwei == baiwei : print(i) elif shiwei == gewei - 1 and shiwei == baiwei + 1: print(i) elif shiwei == gewei + 1 and shiwei == baiwei - 1: print(i) i+=1
遍历数据时使用
"""遍历,循环,迭代是一个意思:把容器里面的每一个元素都重新获取出来""" """ # while 循环在遍历数据时,有一定的局限性,for循环应用而生, for 循环专门用来遍历数据的 while 循环一般用于复杂逻辑操作 # lst = [1,2,3,4] lst = {"a","b","c"} i = 0 while i<len(lst): # print(i) print(lst[i]) i+=1 """ """ # for 循环语法: for i in 可迭代性数据 可迭代性数据:(容器类型数据,range对象,迭代器) """ # 字符串 container = "你的酒窝没有酒,但是我却醉的一塌糊涂" # 列表 container = ["猴山","薇薇","刘琦","余建","谢峰","王文"] # 元组 container = ("猴山","薇薇","刘琦","余建","谢峰","王文") # 集合 container = {"猴山","薇薇","刘琦","余建","谢峰","王文"} # 字典 如果是字典,遍历的是字典的键 container = {"czl":"美丽大方","ssy":"老练沉稳","hqx":"抠脚大叔","zjw":"成功人士"} for i in container: print(i) # 变量的解包 a,b = (1,2) a,b = [3,4] a,b = {"a","b"} a,b = {"a1":1,"b1":2} a,b,c = ("王健林","王思聪","王妈妈") # print(a,b,c) # 遍历等长的二级容器 lst = [("王健林","王思聪","王妈妈") , ["马云","麻花藤","马妈妈"],{"王宝强","马蓉","宋小宝"}] for a,b,c in lst: print(a,b,c) # 遍历不等长的二级容器 lst = [("王健林","王思聪","王妈妈") , ["马云","马妈妈"],{"王宝强"}] for i in lst: for j in i: print(j) # range对象 """ range(start,end,step) start 开始索引 end 结束索引 step 步长 结束索引 这个值取不到,取到end这个值之前的那个数据 """ # range(一个值的情况) 0~9 for i in range(10): print(i) # range(二个值得情况) 2~7 for i in range(2,8): print(i) # range(三个值得情况) 1 3 5 7 9 升序 for i in range(1,10,2): print(i) # range(三个值得情况) 9 7 5 3 1 降序 for i in range(9,0,-2): print(i)