一 if语句
python可以采用 if、elif、else 的方式进行,可以有多个elif。
python 没有else if ,只有 elif
总的来说,python的if语句有两种写法,传统的if 、elif、else组合写法 和 if ,else的简写形式
举例1:脚本文件代码如下:
data = "string"
if data is not None:
print("data is not None")
print("store to mysql")
执行结果:
举例2:脚本文件代码如下:
data = "string"
if data is not None:
print("data is not None")
print("store to mysql")
else:
print("error")
执行结果:
举例3:脚本文件代码如下:
data = None
if data is not None:
print("data is not None")
print("store to mysql")
else:
print("error")
执行结果:
举例4:
age = 18
"""
采用if、elif、else的方式进行,可以有多个elif
"""
if age<10:
print("child")
print("hello")
elif age < 20:
print("young")
elif age < 60:
print("middle")
else:
print("old")
执行结果如下:
python的if , else语句有简写形式
举例5: if,else的简写形式
# if,else的简写形式
a = 1
# 如果 a> 2,将'big'赋值给b,否则,将 ‘small’ 赋值给b
b = 'big' if a > 2 else 'small'
print(b)
执行结果:
二 range函数
range是一个函数,可以挨个产出数字,可以用list(range(10))打印range的元素列表
查看range函数用法 help(range)
range(5) 其实就是range(0, 5) 的简写形式。验证如下:
range函数返回的是一个对象(range object),如果打印的话,只能看到它是一个函数,如果我们想得到它里面的数据列表的话,我们要再加一个函数,把它变成一个list,使用list(range(5)) 来打印range的元素列表。
查看list函数用法 help(list)
eg:
>>> range(5)
range(0, 5)
>>> range(2,5)
range(2, 5)
>>> range(3,10,2)
range(3, 10, 2)
>>> type(range(2,5))
<class 'range'>
>>> type(range(3,10,2))
<class 'range'>
>>> list(range(2,5))
[2, 3, 4]
>>> list(range(3,10,2))
[3, 5, 7, 9]
>>>
当然,想打印range里面的元素的话,除了使用list外,使用set,tuple也可以。不过通常都是使用list
>>> list(range(2,5))
[2, 3, 4]
>>> list(range(3,10,2))
[3, 5, 7, 9]
>>> set(range(5))
{0, 1, 2, 3, 4}
>>> tuple(range(5))
(0, 1, 2, 3, 4)
>>> tuple(range(3,10,2))
(3, 5, 7, 9)
>>>
三 for循环
打印输出5遍 hello huali
创建python文件 pycharm_hello.py,内容如下:
# 打印输出5遍 hello huali
for i in range(5):
print("hello huali", i)
print("结束了吗")
print("循环结束")
效果如下:
python的for循环,不能写成JAVA/C的for(int i=0;i<5;i++)的形式,可以用 for i in range(5): print(i) 代替。range(5)是一个函数,它会把0~4的数字挨个给i,进行遍历。
for循环遍历list列表打印每个元素对应的下标和其对应的值
for循环可以用于遍历python的容器
for循环遍历字符串,会打印每个字符
for s in "hello world":
print(s)
输出结果:
h
e
l
l
o
w
o
r
l
d
for循环遍历list列表
for i in ['a', 'b', 'c']:
print(i)
输出结果:
a
b
c
for循环遍历tuple元组
for i in (1, 'a', 3):
print(i)
输出结果:
1
a
3
for循环遍历dict字典
d = {"name": "小明", "age": 16}
for k in d:
# 打印每个key和该key对应的value
print(k, d[k])
输出结果:
name 小明
age 16
for循环遍历set集合
"""
set集合里面是不允许有重复元素的。
set集合里面可以放一个list列表,它会自动把它里面的元素去重
"""
s = set([1,2,2,3])
print(s)
for i in s:
print(i)
输出结果:
{1, 2, 3}
1
2
3
四 while循环
while: 循环重复判断条件,如果为True就执行,如果为False就退出循环。
打印0~10之间的偶数
创建python文件 pycharm_hello.py,内容如下:
# 打印0~10之间的偶数
idx = 0
while idx <= 10:
# 打印偶数
if idx%2 == 0:
print(idx, "hello", 567)
idx += 1
运行 pycharm_hello.py 结果如下:
五 Python的while循环和for循环的区别及如何选择
for和while都是循环,那么如何选择?
取决于要遍历的数据结构。
如果有一个现成的数据可以挨个遍历或知道要循环多少次,用for+in搭配最简洁
for e in range/str/list/tuple/set/dict/file
如果没有,就写成条件是否满足的形式,用 while 实现。
使用while循环求 1+2+3+...+9 的和
"""
1+2+3+...+9的和
"""
sum=0
idx = 0
while idx < 10:
sum += idx
idx += 1
print(sum)
运行结果如下:
45
使用for循环求 1+2+3+...+9 的和
"""
1+2+3+...+9 的和
"""
sum = 0
for idx in range(10):
sum += idx
print(sum)
运行结果如下:
45
使用for循环遍历列表[1,2,4,5]
for idx in [1,2,4,5]:
print(idx)
运行结果:
1
2
4
5
使用while循环遍历列表[1,2,4,5]
idx=0
l=[1,2,4,5]
while idx < len(l):
print(l[idx])
idx += 1
运行结果:
1
2
4
5
六 for、while循环语句的跳转控制 -- break和continue关键字
for、while的循环语句中有两个关键字叫break,continue,可以用于对循环语句的整体的跳转控制。
continue 用法举例:
for i in range(6):
'''
当执行到i等于3成立的时候,则continue会结束本次循环,continue后面的代码print(i)不再执行,
但它会进入到下一次循环
'''
if i == 3:
continue
print(i)
print("---循环结束---")
执行结果如下:
0
1
2
4
5
---循环结束---
break 用法举例:
for i in range(6):
'''
当执行到i等于3成立的时候,则break会结束整个循环,跳出循环体,并执行循环体后面的代码
'''
if i == 3:
break
print(i)
print("---循环结束---")
执行结果如下:
0
1
2
---循环结束---
continue和break综合举例:
在实际的情形中,我们会从外面得到很多数据,比如从mysql数据库,比如从外面的接口,比如从外面爬取的数据,可能是正常的数据比如字符串,也可能包含空串这种无效的数据,甚至None,但后面又有正常的字符串,那么如何过滤空串和None( None代表从mysql获取数据出错了或者说爬取数据出错了,这个时候我们有必要让它终止整个程序让它退出整个循环进行后面的操作)。因此对于这样的数据的遍历我们可以这样写:
datas = ['str','str','','str',None,'str']
for data in datas:
if data == '': # 如果是不正常的数据空串,但它不影响后面正常数据的处理,则跳过本次循环,继续下一循环
continue
elif data is None: # 遇到None的时候,这个时候我们认为程序可能出了问题,这个时候就不要再进行循环了,选择打印错误信息并退出整个循环
print("error")
break
print("正常的数据",data)
执行结果如下:
正常的数据 str
正常的数据 str
正常的数据 str
error
---循环结束---
注意:
当有多层循环进行嵌套时,break 只能跳出离它最近的一层循环,外层循环它跳不出去。
举例,如下:
#!/usr/bin/env python3
for floor in range(1,6):
if floor == 3:
continue
print(f"欢迎来到第{floor}层")
for room in range(1,7):
print(f"房间{floor}0{room}")
if floor == 4 and room == 4:
print("有多层循环进行嵌套时break只能跳出离它最近的一层循环")
break
执行结果如下:
欢迎来到第1层
房间101
房间102
房间103
房间104
房间105
房间106
欢迎来到第2层
房间201
房间202
房间203
房间204
房间205
房间206
欢迎来到第4层
房间401
房间402
房间403
房间404
有多层循环进行嵌套时break只能跳出离它最近的一层循环
欢迎来到第5层
房间501
房间502
房间503
房间504
房间505
房间506
如果想要跳出外层循环可以借助标志位flag。
举例,如下:
#!/usr/bin/env python3
flag = True
for floor in range(1,6):
if floor == 3:
continue
print(f"欢迎来到第{floor}层")
for room in range(1,7):
print(f"房间{floor}0{room}")
if floor == 4 and room == 4:
print("有多层循环进行嵌套时break只能跳出离它最近的一层循环")
#改变标志位状态
flag = False
break
if flag != True:
break
执行结果如下:
欢迎来到第1层
房间101
房间102
房间103
房间104
房间105
房间106
欢迎来到第2层
房间201
房间202
房间203
房间204
房间205
房间206
欢迎来到第4层
房间401
房间402
房间403
房间404
有多层循环进行嵌套时break只能跳出离它最近的一层循环
ok