老男孩自动化运维开发第2天

目录导航:

  1. 容器类型强制转换
  2. 二级容器
  3. 算数运算符
  4. 赋值运算符与成员运算符
  5. 身份运算符
  6. 位运算符
  7. 代码块
  8. 流程控制
  9. 多项分支
  10. 循环分支
  11. 单循环练习
  12. 字符串的相关操作 
  13.多循环练习
  14. for 循环

1. 容器类型强制转换

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))

 

2. 二级容器

  外面是一个容器类型数据,里面的元素还是一个容器类型的数据

# 二级列表
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)

 

3. 算数运算符

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)

 

4. 赋值运算符与成员运算符

# = 赋值运算符
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)

 

5. 身份运算符

  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)

 

6. 位运算符

  & |  ^ << >> ~

# & 按位与
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

 

7. 代码块

  以冒号最为开始,用缩进来划分同一个作用域,这个整体叫做代码块

"""作用域:作用的区域"""
"""
一个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)
}
"""

 

8.流程控制

"""
流程:代码执行的过程
流程控制:对代码执行的过程一种管控

三大结构:
	(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("登录失败")

 

9. 多项分支

"""
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("没有匹配的选项")

 

10. 循环分支

"""
特点:循环可以减少代码冗余,提升效率,便于后期维护

# 语法;
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)

 

11. 单循环练习

# (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

 

12. 字符串的相关操作 

# (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)

 

13.多循环练习

# (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

 

14. for 循环

  遍历数据时使用

"""遍历,循环,迭代是一个意思:把容器里面的每一个元素都重新获取出来"""
"""
# 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)

 

posted on 2019-12-06 16:55  tengq  阅读(417)  评论(0编辑  收藏  举报

导航