判断与循环语句
判断语句if 单分支
语法:
if 条件:
代码块
1.冒号必须是英文状态下
2.必须要缩进
执行流程
代码
eval(字符串)
#把字符串转换成int类型
a = eval("10")
print(a) #10
print(type(a)) #<class 'int'>
#`在这里插入代码块对字符串进行计算
a = "3*2"
print(a) #3*2
b = eval(a)
print(b) #6
#input("请猜一个数字") ---Str
#eval() 把Str转换成int
guess = eval(input("请猜一个数字"))
if guess ==99:
print("恭喜你猜对了")
#恭喜你猜对了
二分支
语法
if 条件:
代码块 else:
代码块
执行流程
代码
guess = eval(input("请猜一个数字"))
if guess == 99:
print("恭喜你猜对了")
else:
print("谢谢惠顾")
多分支
语法
if 条件:
代码块
elif 条件:
代码块
elif 条件:
代码块
…
else:
代码块
执行流程图
代码
score = eval(input("请输入一个成绩:"))
if score >= 90:
print("a")
elif 90 > score>=80:
print("B")
elif 80 >score>=70:
print("C")
elif 70>score>=60:
print("D")
else:
print("不及格")
三目运算符
语法:
满足条件的代码块
if 条件 else 不满足条件的代码块
执行流程
代码
guess = eval(input("请猜一个数字"))
"""
三目运算符
if的缩写
满足条件的代码块 if 条件 else 不满足条件的代码块
"""
print("恭喜你,猜对了")if guess == 99 else print("谢谢惠顾")
注意
1.必须是二分支语句
条件判断以及组合
操作符及使用 | 描述 |
---|---|
x and y | 两个条件x和y的逻辑与 |
x or y | 两个条件x和y的逻辑或 |
not x | 条件x的逻辑非 |
循环语句for
语法
for 变量 in 遍历结构:
代码块
执行流程
用法
字符串遍历
Str = "hello python"
for i in Str:
print(i)
"""
h
e
l
l
o
p
y
t
h
o
n
"""
列表遍历
list01 = [1,2,3,4]
for i in list01:
print(i)
"""
1
2
3
4
"""
字典遍历
dict01 = {
"张三":18,"李四":20,"王五":80}
"""
1.用普通遍历,只能打印key
张三
李四
王五
"""
for i in dict01:
print(i)
"""
2.字典.items() 返回一个元组
('张三', 18)
<class 'tuple'>
('李四', 20)
<class 'tuple'>
('王五', 80)
<class 'tuple'>
"""
for t in dict01.items():
print(t)
print(type(t))
"""
3.获取单独的key和value,就是想办法把元组拆分,返回基本数据类型
把元组赋值给两个变量
张三
<class 'str'>
18
<class 'int'>
李四
<class 'str'>
20
<class 'int'>
王五
<class 'str'>
80
<class 'int'>
"""
for k,v in dict01.items():
print(k)
print(type(k)) #Str
print(v)
print(type(v)) #int
Set集合遍历
set01 = {
1,2,3,4}
for i in set01:
print(i)
无限循环(while)
语法
while 条件:
变量改变公式
代码块
代码
a = 10
while a>0:
#变量不断改变,为了满足条件,避免进入死循环
a -= 1
print(a)
break continue
break跳出并结束当前整个循环,不执行循环后的语句
continue结束当次循环,继续执行后续次数循环
执行流程
代码
for i in [1,2,3,4,5]:
if i==2:
break
print(i) #1
for i in [1,2,3,4,5]:
if i==2:
continue
print(i) #1
"""
1
3
4
5
"""
循环加else
语法
for 变量 in 遍历结构:
代码块
else:
代码块
执行流程
1.先执行完for循环
2.执行完以后执行else
代码
for i in [1,2,3,4,5]:
print(i)
else:
print("循环结束")
同理,while能不能加else,可以,和上面一样
while语法
while <条件> :
<语句块1>
else :
<语句块2>
循环结束后,会执行else的代码
迭代器
定义
迭代器是一个可以遍历容器的一个对象
1.迭代器返回一个对象
2.哪些东西可以进行迭代?
容器类型的—list set 字典 字符串 方法
"""
迭代器
#注意是两个下划线
list01.__iter__() 返回一个迭代器对象
"""
list01 = [1,2,3,4]
#注意是两个下划线
a = list01.__iter__()
print(a) #<list_iterator object at 0x0000024037E0C588>
"""
如何返回值
迭代器对象.next() 返回一个值
1.不只能返回第一个值吗 no 因为next()可以记忆位置,每次你调用一次,他会记住这位置,然后下一次从下一个位置开始
3.可以一直调用
但是没有数据会报错 StopIteration
我们的next没有办法回头,不会从头开始,他只会从记忆的位置的开始
list01 = [1,2,3,4]
print(a.__next__()) #1
print(a.__next__()) #2
print(a.__next__()) #3
print(a.__next__()) #4
print(a.__next__()) #报错
迭代
ist01 = [1,2,3,4]
#注意是两个下划线
a = list01.__iter__()
"""
迭代对象的遍历
1.__next__() 不会从头开始, 每次从记忆的位置开始
2.for循环就相当于是不断的打印__next__()。但是为什么没报错
自己抛出StopIteration,然后停止循环
"""
for i in list01:
print(i)
生成器
定义
生成器也是一种迭代器,但是你只能对其迭代一次。
a = func_add01([2,3,5,7,9])
print(a)
#<generator object func_add01 at 0x000001AD11F8D148>
for i in a:
print(i)
3
4
6
8
10
>>> a.__next__()
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
a.__next__()
StopIteration
>>> b = func_add01([2,3,5,7,9])
>>> b.__next__()
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个特殊的迭代器。
生成器可以一边循环一边计算 优点是节省内存 关键字是:yield
代码
def func_add