1.容器类型的强制转换

类型:str list tuple set dict
var1 = "今天天气好晴朗朗"
var2 = ["刘璐","王钊","王华振","罗淞峰"]
var3 = ("刘璐1","王钊1","王华振1","罗淞峰1")
var4 = {"王文贤","庄哲浩","王铁男"}
var5 = {"a":1,"b":2}

# str  ( 容器类型数据  /  Number类型数据 都可以 )
"""规律:基于原来的数据类型两边套上引号"""
res = str(var2)
res = str(var5)
res = str(var6)
print(res,type(res))
# repr 以字符串的形式原型化输出数据.
print(repr(res))

# list
"""规律:如果是字符串,把里面的字符一个一个拿出来,作为列表的每一个元素
如果是其他容器数据,只是基于原数据,把两边的符号换成[] , 换成列表
如果是字典,只是单纯的获取字典的键,不要那个值,组成列表.
"""
res = list(var1)
res = list(var3)
res = list(var4)
res = list(var5)
print(res)

# tuple
"""规律:如果是字符串,把里面的字符一个一个拿出来,作为元组的每一个元素
如果是其他容器数据,只是基于原数据,把两边的符号换成() , 换成元组
如果是字典,只是单纯的获取字典的键,不要那个值,组成元组.
"""
res = tuple(var1)
res = tuple(var2)
res = tuple(var4)
res = tuple(var5)
print(res)

# set
"""规律:如果是字符串,把里面的字符一个一个拿出来,作为集合的每一个元素
如果是其他容器数据,只是基于原数据,把两边的符号换成{} , 换成集合
如果是字典,只是单纯的获取字典的键,不要那个值,组成集合

集合的特征:自动去重,无序
"""
res = set(var1)
res = set(var2)
res = set(var5)
print(res)

2.容器管理

2.1 二级容器 
  作用:外层是一个容器类型数据,里面的元素还是一个容器类型的数据.

  listvar = [1,2,3,4,5,(6,7,8,0)]

# 二级列表
listvar = [1,2,3,4,[4,5,66]]

# 二级元组
tuplevar = (1,2,3,(4,5,6))

# 二级集合 在集合里面只能放 可哈希数据:Number(int float complex bool) str tuple
setvar = {"a",1,2,(3,4,5)}
print(setvar)
# setvar = {"a",1,2,(3,4,5,[5,6,7])} error 列表不可哈希

# 二级字典
dictvar = {"a":1,"b":{"c":3,"d":4}}

2.2 等长的二级容器
"""
(1) 里面的每一个元素都是容器类型数据
(2) 容器里面放的元素个数等长
"""

lst = [(1,2,3),(4,5,6),(8,9,10)]
tup = (["a","b"],[1,2],(4,5))


2.3 多级容器取值
container = [1,2,3,4,5,(7,8,9,{"a":1,"b":{"c":[888,99,22]}})]
res = container[-1] # res = (7,8,9,{"a":1,"b":{"c":[888,99,22]}})
res2 = res[-1] # res2 = {"a":1,"b":{"c":[888,99,22]}}
res3 = res2["b"] # {"c":[888,99,22]}
res4 = res3["c"] # res4 = [888,99,22]
res5 = res4[1] # 99
print(res5)

3.强转字典

"""
需要等长的二级容器,并且元素的总个数是2个;
字符串元素个数只能是2个,多一个都不行,有局限性,不推荐使用
""" # 外层是列表,里面是列表或者元组或者字符串(不推荐,有局限性)
lst = [["a",1],("b",2),"c3"]
res = dict(lst)
print(res) # 外层是元组,里面是列表或者元组或者字符串(不推荐,有局限性)
tup = (["c",15],("d","sdfsdfsd"),"f8")
res = dict(tup)
print(res) # 外层是集合,里面是元组(如果想要表达容器,在集合中只能是元组)
setvar = {("f1",3.44),("e2",3+9j)}
res = dict(setvar)
print(res) # 外层是元组或者列表,里面是集合,从语法上来看允许,但是违背逻辑,因为集合无序,不推荐使用.
container = [{"a",15}]
res= dict(container)
print(res) # 把列表的重复数据去掉,可以先转集合,再转列表,缺陷:顺序被打乱.
listvar = ["a","a",1,2,1,"c"]
res = list(set(listvar))
print(res)

C:\Users\G1702543\AppData\Local\Programs\Python\Python35\python.exe G:/周末四期/L002/test.py
{'a': 1, 'b': 2, 'c': '3'}
{'f': '8', 'c': 15, 'd': 'sdfsdfsd'}
{'e2': (3+9j), 'f1': 3.44}
{'a': 15}
['a', 1, 2, 'c']

Process finished with exit code 0

"""
bool() int() float() complex()
str() list() tuple() set() dict()

这些强转的数据类型,在不给参数的情况下,默认返回一个该数据类型的值
这些值可以作为变量的初始化值
"""
res = tuple()
res = dict()
res = set()
res = int()
print(res)

C:\Users\G1702543\AppData\Local\Programs\Python\Python35\python.exe G:/周末四期/L002/test.py
()
{}
set()
0

Process finished with exit code 0

3.运算比较

3.1 算数运算符:  + - * / // % **

var1 = 15
var2 = 7
# +
res = var1 + var2
print(res)

# -
res = var1 - var2
print(res)

# *
res = var1 * var2
print(res)

C:\Users\G1702543\AppData\Local\Programs\Python\Python35\python.exe G:/周末四期/L002/test.py
22
8
105

# / 通过除法得到的数据一定是小数,浮点型,及时除尽,数字后面加上.0表达小数.
res = var1 / var2
res = 6 / 2 # 3.0
print(res)

# // 地板除 得到一个整数
res = 6 // 2
print(res)

res = var1 // var2
print(res)

# 如果除数或者被除数是一个小数,那么这个结果尾巴带上.0
res = var1 // 7.0
print(res)

# % 取余
res = var1 % var2
res = 13 % 7 # 6
res = -13 % 7 # 1 -6 + 7 = 1
# res = 13 % -7 # -1 6 + (-7) = -1
# res = -13 % -7# -6 把正确的余数算出来,前面带上负号即可.

print(res)

# ** 幂运算
res = 5 ** 3 # 5的3次方
print(res)
3.2 比较运算符:  > < >= <= == != 
"""比较的结果只有2个,要么是真的True,要么是假的False"""
var1 = 15
var2 = 7

# >
res = var1 > var2
print(res)

# <
res = var1 < var2
print(res)

# >= 满足一个条件为真即可
res = 15 >= 15
print(res)

# <= 满足一个条件为真即可
res = 15 <= 15
print(res)

# == 等于,是在做比较,不是在做赋值,赋值是一个等号
res = var1 == var2
print(res)

# != 不等于
res = var1 != var2
print(res)

C:\Users\G1702543\AppData\Local\Programs\Python\Python35\python.exe G:/周末四期/L002/test.py
True
False
True
True
False
True

# *=
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)

C:\Users\G1702543\AppData\Local\Programs\Python\Python35\python.exe G:/周末四期/L002/test.py
105
15.0
2.0
2.0
128.0

 3.3 成员运算符: in 和 not in

"""判断字符串时,需要是一个连续的片段,才能返回真"""
strvar = "如果遇到你是一种错,那我宁愿一错再错"
res = "你" in strvar
res = "遇到你" in strvar
res = "错,那" in strvar
print(res)

(1) tuple list set
tup = ("吴波","帅乐","毕杨生","刘得元")
res = "刘得元" in tup
print(res)
lst = ["吴波","帅乐","毕杨生","刘得元","温红杰"]
res = "温红杰" not in lst
print(res)
setvar = {"赖廷","银燕","王成全"}
res = "银燕" not in setvar
print(res)

(2) dict in 或者 not in 判断的是字典的键,不是那个值
dictvar = {"wtn":"成熟稳重","lxh":"大,头大","lsf":"温文尔雅","hh":"哈哈"}
res = "成熟稳重" in dictvar
print(res) # error
res = "lsf" not in dictvar
print(res)
res = "lxh" in dictvar
print(res)


3.4 身份运算符 is 和 is not (检测两个数据在内存当中是否是同一个值)
# int  -5 ~ 正无穷
var1 = 6
var2 = 6

# 比较两个变量指向的地址是不是同一个 [比较地址]
res = var1 is var2
print(res)

# 比较两个变量的值是不是相等; [比较值]
res = var1 == var2
print(res)

# 复数. 在只有虚数的情况下,地址相同
var1 = 6j
var2 = 6j
print(var1 is var2)

# bool 两个值相同,那么地址一样
var1 = False
var2 = True
print(var1 is not var2)

# 容器类型数据 只有空元组和相同的字符串,在值相同情况下,地址是一样的
var1 = ()
var2 = ()
print(var1 is var2)
var1 = "好"
var2 = "好"
print(var1 is var2)
var1 = [1,2]
var2 = [1,2]
print(var1 is not var2)

3.5 逻辑运算符   and or not

# and 逻辑与
"""全真则真,一假则假"""
res = False and False
print(res) #False
res = True and False
print(res) #False
res = True and True
print(res) #True
res = False and True
print(res) #False

# or 逻辑或
"""全假则假,一真则真"""
res = True or True
print(res)
res = True or False
print(res)
res = False or True
print(res)
res = False or False
print(res)

# not 逻辑非
"""取反 真变假 假变真"""
res = not True
res = not False
print(res)

# 逻辑短路 , 后面的代码不走了
"""
(1) True or 表达式
(2) False and 表达式
"""

# (1)
True or print("我短路了么?1")
# (2)
False and print("我短路了么?2")

# print 是系统的函数,打印的值和要返回的值是两个完全不同的概念
res = print(1234)
print(res) #None print没有返回值 是通过return + 返回值定义的

# res = True and print(123)
# res = True and None
# print(res)

res = True and 7
print(res) #7
res = False and 8
print(res) #False
res = True or 99
print(res) # True
res = False or "abc"
print(res) #"abc"

# 逻辑运算符优先级
"""
() > not > and > or
如果存在逻辑短路,优先计算短路,比如True or ...... 一定为True
"""

res = 5 or 6 and 7 # 5
res = (5 or 6) and 7 # 7
res = not (5 or 6) and 7 # False
print(res)

res = 1>2 and 3<4 or 5>6 and 7>8
print(res)
# res= False and True or False and False
# res= False or False
# res = False

 3.6 位运算

# ### (7)位运算符:    & | ~ ^ << >>

# & 按位与
var1 = 19
var2 = 15
res = var1 & var2
print(res)
"""
10011
01111
00011
"""

# | 按位或
res = var1 | var2
print(res)
"""
10011
01111
11111
"""

# ^ 按位异或

"""两个值不相同即为真,相同即为假"""
res = var1 ^ var2
print(res)
"""
10011
01111
11100
"""
# << 左移

"""左移是乘 5左移2位相当于 5 * 2的2次幂 = 20"""
res = 5 << 2
print(res)
"""
0000 ... 101
0000 . 10100
"""
# >> 右移

"""右移是除 5右移1位相当于 5 // 2的1次幂 = 2"""
res = 5 >> 1
print(res)
"""
0000 ... 101
0000 ... 010
"""

# ~ 按位非 公式: ~19 => -(n+1)
res = ~(-18)
print(res)

"""
总结:所有运算符优先级;
一元运算符: 同一时间,操作一个数据的 (~ -)
二元运算符: 同一时间,操作两个数据的 (+ - * / ...)

一般情况下 , 一元运算符 优先级大于 二元运算符
-3 + 5 = 2

例外:
所有运算符优先级最高的 ** 幂运算 ~2**2
所有运算符优先级最低的 = 赋值运算符

同等级运算符优先级:
() > not > and > or
乘除 > 加减
(<< >>) > & > ^ > |

除此之外,大体优先级高低:
算术运算符 > 位运算符 > 比较运算符 > 身份运算符 > 成员运算符 > 逻辑运算符
赋值运算符 单独列出来 用于把右侧的值算完之后收尾.
"""

res = ~2**2
print(res)

res = 5+5 << 6//3 is 40 and True
# 5+5 << 2 is 40 and True
# 10 << 2 is 40 and True
# 40 is 40 and True
# True and True => True
print(res) #True

# 加上括号提升优先级 让别人也能看懂
res = (5+5) << (6//3) is 40 and True

4. 代码块

# ### 代码块 : 以冒号作为开始,用缩进来划分作用域,这个整体是一个代码块
"""
作用域:作用的范围
看似距离相同,不代表是同一个缩进,比如4个空格和1个tab距离也是相同的,但是并不是同一个代码块
1个tab的距离 = 4个空格,在写代码块的时,要么全用4个空格,要么全用1个tab缩进,不要混在一起使用
python 代码要比其他语言更加简洁,对代码的格式有要求.
"""
print(11)
print(22)
print(33) if 5 == 5:
print(1)
print(2)
print(3)
# print(4) # IndentationError if 6 != 6:
print(5)
print(6) # php 等其他语言用的是{}来包裹代码,表达同一个作用域
"""
# 了解
if(6==6){
var_dump($a)
var_dump($b)
}
"""

5. 流程控制(单项\双向)

# ### 流程控制
"""
流程:代码执行的过程
流程控制:就是对代码执行的过程进行管控 流程控制的三大结构:
顺序结构: 代码从上到下,依次执行
分支结构: 4小类
循环结构: while , for 分支结构: 关键字 if
(1)单项分支
(2)双项分支
(3)多项分支
(4)巢状分支
""" # 单项分支
"""
语法:
if 条件表达式:
code1
code2
...
... 如果条件表达式成立,那就是返回真True ,就会执行代码块
如果条件表达式不成立,那就是返回假False,不执行代码块
""" guoyimeng = "美女"
guoyimeng = "绿巨人"
if guoyimeng == "美女":
print("给你买好吃的")
print("给你买好喝的")
print("给你买兰蔻")
print("给你买倩碧")
print("给你买香奈儿")
print("给你买LV")
print("给你买兰博基尼")
print("给你买包,因为包治百病!") # 双项分支: (2个当中选一个)
"""
if 条件表达式:
code1
code2..
else:
code3
code4... 如果条件表达式为真,那就是返回真True,执行code1和code2..
如果条件表达式为假,那就是返回假False,执行code3和code4.. if 下面的代码块也可以叫做真区间
else 下面的代码块也可以叫做假区间
""" huanghua = "高富帅"
huanghua = "屌丝"
if huanghua == "高富帅":
print("我就嫁给你")
else:
print("你是个好人~") """
模拟网站的登录
等待用户输入账号和密码;
账户是admin 密码是111
如果条件满足,就让他登录
如果条件不满足,就告诉他登陆失败
""" # input 等待用户输入字符串 , 他返回的数据类型是字符串
# res = input("先森~,你妈贵姓~:")
# print(res,type(res)) username = input("请输入您的用户名:")
password = input("请输入您的密码:")
# print(username)
# print(password) if username == "admin" and password == "111":
print("恭喜你~ 登陆成功")
else:
print("抱歉,登录失败")

6.多项巢状

# ### 多项分支
"""
if 条件表达式1:
code1
code2
elif 条件表达式2:
code3
code4...
elif 条件表达式3:
code5
code6...
else:
code7 ... 如果条件表达式1满足,返回真,就执行对应代码块,如果条件表达式1不满足,代码往下执行
看一看条件表达式2 是否成立,如果成立,就执行对应代码块,如果条件表达式2不满足,代码往下执行
看一看条件表达式3 是否成立,如果成立,就执行对应代码块,如果条件表达式3不满足,直接执行else这个区间的代码块 elif 可以有多个,也可以没有
else 只能有一个,也可以没有 只有当所有条件都不满足的时候,才会执行else区间.
多项分支是多选1的结果.
""" youqian = True
# 双项分支
if youqian == True:
print("我就嫁给你")
else:
print("你是个好人") youqian = False
youfang = False
youche = False
youyanzhi = False
youtili = False # 多项分支
print("<=============>")
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("你是个好人啊6") # 巢状分支 (单项分支 双项分支 多项分支的互相嵌套)
youqian = True
youfang = True
youche = True
youyanzhi = True
youtili = True if youqian == True:
if youfang == True:
if youche == True:
if youyanzhi == True:
if youtili == True:
print("我就嫁给你")
else:
print("恭喜你,成为我的1号备胎.")
else:
print("恭喜你,成为我的2号备胎.")
else:
print("恭喜你,成为我的3号备胎.")
else:
print("抱歉,前面就是2路汽车,一会好赶不上了呦") #出题 height
#女生找对象
# 男生在1米~1.5米之间 小强 你在哪里?
# 男生在1.5~1.7米之间 没有安全感~
# 男生 1.7~ 1.8米之间 帅哥 留个电话
# 男生 1.8~2米之间 帅哥 你建议多一个女朋友吗 # height = 0.5
# 方法一.通用写法
"""
height = float(input("请输入您的身高:"))
if 1<=height 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("没有符合条件的选项")
""" # 方法二.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("没有符合条件的选项")

7. while循环

# ### 循环结构
"""
特点:可以提升代码执行的效率,减少冗余代码
语法:
while 条件表达式:
code1...
code2....
如果条件表达式成立,那就返回True,执行代码块里面的内容
如果条件表达式成立,那就返回False,终止循环.
""" # 打印1~100;
"""
# (1) 初始化一个变量i
i = 1
# (2) 写一个循环的条件
while i<=100:
# (3) 写一个自增自减的值
i+=1
"""
i = 1
while i<=100:
print(i)
i+=1 # i = i+1 """
代码解析:
先初始化变量i等于1
判断1 <= 100 条件为真,返回True,执行循环中的代码块
直接print(1)
让i 自增加1 变成结果2
第一次循环结束 ,回到22 循环判断的条件中 判断2 <= 100 条件为真,返回True,执行循环中的代码块
直接print(2)
让i 自增加1 变成结果3
第二次循环结束 ,回到22 循环判断的条件中 判断3 <= 100 条件为真,返回True,执行循环中的代码块
直接print(3)
让i 自增加1 变成结果4
第三次循环结束 ,回到22 循环判断的条件中 判断4 <= 100 条件为真,返回True,执行循环中的代码块
直接print(4)
让i 自增加1 变成结果5
第四次循环结束 ,回到22 循环判断的条件中 依次类推.. 直到什么时候结束?
当 i = 101 的时候 1 <= 101 条件不成立,返回False ,不执行代码块,直接循环终止;
""" # 计算1~100的累加和?
i = 1
total = 0
while i<=100:
total += i #total = i+total
i+=1
print(total) """
i =1
total = 0 + 1
i+=1 => i = 2
第一次循环结束... i = 2
total = 0 + 1 + 2
i+=1 => i = 3
第二次循环结束... i = 3
total = 0 + 1 + 2 + 3
i+=1 => i = 4
第三次循环结束... .... 依次类推 ,什么时候结束?
当 i = 101
发现 101 <= 100 这个条件为假 那么循环终止
此刻total = 0+1+2+3+4+... .... + 100 = 5050
""" # 死循环
"""
while True:
print(1)
"""
# 方法二: 做1~100的累加和
print("<====>")
i = 1
total = 0
sign = True
while sign:
total += i
i+=1 if i == 101:
sign = False
print(total) # 5050

8. 练习--单层循环经典练习

# 1.打印一行十个小星星
# help 查看函数的帮助文档
help(print)
# end="" 默认不换行,在最后一个字符的后面插入空字符取代\n
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.用变量拼接字符串的形式,打印一行十个小星星
i = 0
strvar = ""
while i<10:
strvar += "*" # strvar = strvar + "*"
i+=1 print(strvar) # (3)打印一行十个小星星 奇数个打印★ 偶数个打印☆
"""
0 % 2 = 0
1 % 2 = 1
2 % 2 = 0
3 % 2 = 1
4 % 2 = 0
... 0 % 3 = 0
1 % 3 = 1
2 % 3 = 2 3 % 3 = 0
4 % 3 = 1
6 % 3 = 2
... 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
.....
1.任意数和n取余 : 值得范围 0~(n-1)
"""
i = 0
while i < 10:
# 所有的代码写在中间... 下面.. # 输出星星的代码
if i % 2 == 0:
print("★",end="")
else:
print("☆",end="") i+=1 # (4)用 一个循环 打印十行十列小星星
print("<====>")
"""
**********
**********
**********
**********
**********
**********
**********
**********
**********
********** # 如何打印100颗星星?
"""
i = 0
while i<100:
# 打印星星
print("*",end="") if i % 10 == 9:
# 打印换行 因为默认end="\n"
print()
i+=1
"""
规律:
0123456789 10111213141516171819 20212223242526272829
********** * * ******** ********** **********************************************************************
0 1 23456789 0123456789
""" # (5)一个循环 打印十行十列隔列变色小星星(一个循环)
"""
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
★☆★☆★☆★☆★☆
"""
i = 0
while i<100:
# 打印星星
if i % 2 == 0:
print("★",end="")
else:
print("☆",end="") if i % 10 == 9:
# 打印换行 因为默认end="\n"
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
7 // 3 = 2
8 // 3 = 2 0 // 4 = 0
1 // 4 = 0
2 // 4 = 0
3 // 4 = 0 4 // 4 = 1
5 // 4 = 1
6 // 4 = 1
7 // 4 = 1 8 // 4 = 2
9 // 4 = 2
10 // 4 = 2
11 // 4 = 2 12 // 4 = 3
.... 2.任意数 和 n进行地板除,会出现n个相同的数字
3.地板除可以获取一个数的高位,取余可以获取一个数的低位
89 // 10 = 8 (高位)
89 % 10 = 9 (低位)
""" i = 0
while i<100:
# 输出星星
if i // 10 % 2 == 0:
print("★",end="")
else:
print("☆",end="")
# 打印换行
if i % 10 == 9:
print()
i+=1 """
当i 范围在0~9 // 10 会出现10个相同的0 0在和2取余,余数是0
当i 范围在10~19 // 10 会出现10个相同的1 1在和2取余,余数是1
当i 范围在20~29 // 10 会出现10个相同的2 2在和2取余,余数是0
当i 范围在30~39 // 10 会出现10个相同的3 3在和2取余,余数是1
当i 范围在40~49 // 10 会出现10个相同的4 4在和2取余,余数是0
当i 范围在50~59 // 10 会出现10个相同的5 5在和2取余,余数是1
当i 范围在60~69 // 10 会出现10个相同的6 6在和2取余,余数是0
当i 范围在70~79 // 10 会出现10个相同的7 7在和2取余,余数是1
当i 范围在80~89 // 10 会出现10个相同的8 8在和2取余,余数是0
当i 范围在90~99 // 10 会出现10个相同的9 9在和2取余,余数是1
"""

9.字符串操作

# ### 字符串相关操作
# (1)字符串的拼接 +
res = "我爱你" + "亲爱的菇凉"
print(res)
s1 = "我爱你"
s2 = "亲爱的祖国"
res = s1 + s2
print(res) # (2)字符串的重复 *
strvar = "重要的事情说三遍"
res = strvar * 3
print(res) # (3)字符串跨行拼接 \
strvar = "水电费水电费sdkfjsjdfjksjdfksjdkjskdjfksjdfkjskdf"\
"aaabbbccc"
print(strvar) # (4)字符串的索引
# 0 1 2 3 4 5 6 7 8 正向索引
strvar = "咱们班的女生特别多"
# -9-8-7-6-5-4-3-2-1 逆向索引
res = strvar[6]
print(res)
res = strvar[-3]
print(res) # (5)字符串的切片: 字符串的截取
"""
语法 => 字符串[::] 完整格式:[开始索引:结束索引:间隔值]
(1)[开始索引:] 从开始索引截取到字符串的最后
(2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
(3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
(4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符
(5)[:]或[::] 截取所有字符串
"""
# listvar = ["王子红","麦秸康","友军表","王铁男","庄泽浩","好舌头","王文多一个字","刘璐","李志华","文招财","陈凤杰"]
strvar = "黑夜给了我黑色的眼睛,我却用它翻白眼"
# (1)[开始索引:] 从开始索引截取到字符串的最后
res = strvar[3:]
print(res)
# (2)[:结束索引] 从开头截取到结束索引之前(结束索引-1)
res = strvar[:8]
print(res)
# (3)[开始索引:结束索引] 从开始索引截取到结束索引之前(结束索引-1)
res = strvar[5:10] # 最大下标10取不到
print(res)
# (4)[开始索引:结束索引:间隔值] 从开始索引截取到结束索引之前按照指定的间隔截取字符 # 正向获取
res = strvar[::3]
# 0 3 6 9 12 15 黑 了 色 睛 却 翻
print(res) # 逆向获取
res = strvar[::-1]
#-1 -2 -3 -4 ... 一直到最后
print(res)

10. 双层循环经典

# ### 双层循环练习
# (1)打印十行十列小星星 (用两个循环) # 打印一行十个小星星
# i = 0
# while i<10:
# print("*",end="")
# i+=1 # 针对于一行十个星星,循环10次即可
j = 0 # j来控制行数 一共10行
while j<10:
# 在这个地方写你自己的逻辑 # 里层循环控制打印一行十个星星
i = 0
while i<10:
print("*",end="")
i+=1 # 在打印完一行之后,打印换行;
print() j+=1 print("<====>")
# (2)打印十行十列隔列换色小星星 j = 0
while j<10:
# 打印星星
i = 0
while i<10:
# 控制打印星星的花色
if i % 2 == 0:
print("★",end="")
else:
print("☆",end="")
i+=1 # 打印换行
print() j+=1 # (3)打印十行十列隔行换色小星星
"""
外层j动一次,里面i的循环动10次,
外层动的慢,内层动的快
i和j切换即可;
"""
print("<====>")
j = 0
while j<10:
# 打印星星
i = 0
while i<10:
# 控制打印星星的花色
if j % 2 == 0:
print("★",end="")
else:
print("☆",end="")
i+=1 # 打印换行
print() j+=1 # (4)99乘法表
# 方向一 正序
i = 1
while i<=9:
# print(i)
# 内层循环,循环几次完全取决于i
j = 1
while j<=i:
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 打印换行
print()
i+=1
# 方向二 倒叙
print("<>=====")
i = 9
while i>0:
# print(i)
# 内层循环,循环几次完全取决于i
j = 1
while j<=i:
print("%d*%d=%2d " % (i,j,i*j),end="")
j+=1 # 打印换行
print()
i-=1 # (5)100 ~ 999 找吉利数字 111 222 123 321 888 ...
"""
789
百位:789 // 100 => 7
十位:789 // 10 % 10 => 8
个位:789 % 10 => 9
"""
i =100
while i<=999:
baiwei = i // 100
shiwei = i // 10 % 10
gewei = i % 10
# 三个相同的数字
if shiwei == gewei and shiwei == baiwei:
print(i) # 123 456 789
if shiwei == gewei - 1 and shiwei == baiwei+1:
print(i) # 321 765 876
if shiwei == gewei + 1 and shiwei == baiwei-1:
print(i)
i+=1

14. for循环

# ### for 循环
"""循环 遍历 迭代 这三个名词都是获取每一个数据的意思"""
"""
for 循环专门用来遍历数据,
而while循环遍历数据有局限性,无法遍历无序容器数据
while一般用于复杂的逻辑操作 语法:
可迭代对象:(容器类型数据,range对象,迭代器)
for i in 可迭代对象:
code..
""" """
# while 遍历数据的局限性
lst = [1,2,3,4]
lst = {1,2,3,4}
i = 0
while i<len(lst):
res = lst[i]
print(res)
i+=1
""" # 遍历集合
container = {"树则会","郭一萌","银燕","刘璐","罗淞峰"} # 遍历列表
container = ["树则会","郭一萌","银燕","刘璐","罗淞峰"] # 遍历元组
container = ("树则会","郭一萌","银燕","刘璐","罗淞峰")
for i in container:
print(i) # 遍历字符串
container = "我爱你,美丽的祖国,我歌颂党的伟大,积极响应党的号召"
for i in container:
print(i) # 遍历字典 在遍历字典的时,默认遍历键
container = {"wzh":"老哥~稳","mjk":"奄奄一息",'zzh':"梦游神国","dlh":"九九有神"}
for i in container:
print(i) # 遍历等长的二级容器
listvar = [("王健林","王思聪","王美丽"),["马云","马化腾","马冬梅"],("王宝强","马蓉","宋小宝")] # 变量的解包
a,b = [1,2]
print(a,b)
a,b,c = (4,5,6)
print(a,b,c)
a,b = 7,8
print(a,b) for i in listvar:
"""
('王健林', '王思聪', '王美丽')
['马云', '马化腾', '马冬梅']
('王宝强', '马蓉', '宋小宝')
"""
print(i) for a,b,c in listvar:
print(a,b,c) # 遍历等长的二级容器
listvar = [("王健林","王思聪","王美丽"),["马云","马化腾"],("王宝强",)] for i in listvar:
for j in i:
print(j) # range对象
"""
range(start,end,step)
start 开始值
end 结束值 (最大值取不到,取到之前的那个值)
step 步长
"""
# 1.range中只有一个值
for i in range(10):
print(i) # 2. range中有二个值
for i in range(1,9):
print(i) # 3. range中有三个值 正向值
for i in range(1,15,3):
# 1 4 7 10 13
print(i) print("<=============>")
# 3. range中有三个值 逆向值
for i in range(15,0,-3):
# 1 4 7 10 13
print(i)

Learn day2 运算/循环/字符串操作的更多相关文章

  1. Python3基础(2)模块、数据类型及运算、进制、列表、元组、字符串操作、字典

    ---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...

  2. 小白的Python之路 day2 字符串操作 , 字典操作

    1. 字符串操作 特性:不可修改 name.capitalize() 首字母大写 name.casefold() 大写全部变小写 name.center(50,"-") 输出 '- ...

  3. 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作

    页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...

  4. shell中的字符串操作和数学运算

    字符串操作   变量赋值: 说明:变量值可以用单引号.双引号.或者不加任何引号来赋值给变量 变量名="变量值" 变量名='变量值' 变量名=变量值 例如:str="hel ...

  5. python学习day3------列表、元组、字符串操作

    一.列表 变量名后加中括号[],接下来介绍对列表进行查操作 #!/usr/bin/env python #-*- Coding:utf-8 -*- # Author:Eric.Shen test = ...

  6. python学习笔记(字符串操作、字典操作、三级菜单实例)

    字符串操作 name = "alex" print(name.capitalize()) #首字母大写 name = "my name is alex" pri ...

  7. Python 字符串操作及string模块使用

    python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求: python的字符串属性函数 python的string模块 1.字符串属性方法操作: 1.>字符串格式输出对 ...

  8. C语言字符串操作总结大全

    1)字符串操作 strcpy(p, p1)  复制字符串  函数原型strncpy(p, p1, n)   复制指定长度字符串  函数原型strcat(p, p1)   附加字符串  函数原型strn ...

  9. c# 字符串操作

    一.字符串操作 //字符串转数组 string mystring="this is a string" char[] mychars=mystring.ToCharArray(); ...

随机推荐

  1. spark 笔记2

    一.Spark Shuffle 的发展 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidat ...

  2. HTTP 的前世今生,那些不为人知的秘密

    每个时代,都不会亏待会学习的人. 大家好,我是 yes. HTTP 协议在当今的互联网可谓是随处可见,一直默默的在背后支持着网络世界的运行,对于我们程序员来说 HTTP 更是熟悉不过. 平日里我们都说 ...

  3. RabbitMQ小记(四)

    1.RabbitMQ管理 (1)权限管理 物理服务器和虚拟主机都各自有独立的权限管理,用户访问需要设置权限. 授权命令:rabbitmqctl set permissions [-p vhost] { ...

  4. mysql-8-subquery

    #进阶8:子查询 /* 出现在其他语句中的select语句(嵌套) 分类: 按子查询出现的位置: SELECT 后面 FROM 后面 WHERE 或 HAVING 后面 EXISTS后面 */ USE ...

  5. 025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构

    025 01 Android 零基础入门 01 Java基础语法 03 Java运算符 05 if条件结构 本文知识点:Java中的if条件结构语句 关系运算符回顾 生活中根据条件进行判断采取不同操作 ...

  6. Serial.begin

    串口波特率的设置:通常我们使用Serial.begin(speed)来完成串口的初始化,这种方式,只能配置串口的波特率. 使用Serial.begin(speed, config)可以配置数据位.校验 ...

  7. 【题解】 P2734 [USACO3.3]游戏 A Game

    \(\color{purple}{Link}\) \(\text{Solution:}\) 考虑区间\([l,r]\)的最优解.显然它可以由\([l+1,r]\)或\([l,r-1]\)转移而来.至此 ...

  8. Jmeter之『Xpath提取器』

    1.使用Xpath提取时,有时候需要过滤标题,使用以下语句 //td[@class="r-count" and not(text()="回应")]

  9. 空间视频和GIS

    摘要. GIS的空间数据基本单位表示通常是根据 点,线和面.但是,另一种类型的空间数据正在变得越来越频繁 捕获的是视频,但在GIS中却被很大程度上忽略了.数字录像时 是现代社会中常见的一种媒介,包含多 ...

  10. 多测师讲解 _接口自动化框架设计_高级讲师肖sir

    背景:因为把传入接口参数.组建测试用例.执行测试用例和发送报告,都放入一个.py文件对于接口的使用非常不灵活就需要数据和接口业务进行分离让代码之间的 耦合性降低.和实现接口的分层管理,所以需要对代码进 ...