其他
干货 | 收藏!16段代码入门Python循环语句
以下文章来源于大数据 ,作者李明江 张良均 等
for 变量 in 序列:
操作语句
序列:接收序列,表示遍历范围。无默认值 操作语句:接收操作语句,表示执行一段代码。无默认值
代码清单1:for语句遍历提取str
# 单纯遍历的for语句
names = ['Michael', 'Bob', 'Tracy']
# 遍历输出names中的元素
for name in names:
print(name)
Michael
Bob
Tracy
代码清单2:for语句遍历查询dict
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# 遍历键值对
print('key_value:', end = '')
for key, value in dic.items():
print(key, value, sep = ':', end = ' ')
# 遍历键
print('keys:', end = '')
for key in dic.keys():
print(key, end = ' ')
# 遍历值
print('values:', end = '')
for value in dic.values():
print(value, end = ' ')
key_value:a:1 b:2 c:3 d:4
keys:a b c d
values:1 2 3 4
从代码清单2可以看到,for语句中用于遍历的“变量”不仅可以是Python默认的指代词,也可以是常规的变量。
代码清单3:嵌套for语句
students = ['小明', '小红']
subjects = ['语文', '数学']
sum1 = []
avg = []
for i in students:
print ('开始录入%s的考试成绩!'%i)
sum = 0
for j in subjects:
print('请输入%s成绩:'%j)
score = int(input())
sum += score
average = sum / 2
avg.append(average)
sum1.append(sum)
print(students, '的总分依次是', sum1, ',', '平均分依次是', avg)
print('完成成绩录入!')
开始录入小明的考试成绩!
请输入语文成绩:
97
请输入数学成绩:
90
开始录入小红的考试成绩!
请输入语文成绩:
89
请输入数学成绩:
100
['小明', '小红'] 的总分依次是 [187, 189] , 平均分依次是 [93.5, 94.5]
完成成绩录入!
while 条件表达式:
操作语句 1
操作语句 2
条件表达式:接收布尔表达式,表示判断条件是否成立。无默认值 操作语句:接收操作语句,表示执行一段代码。无默认值
代码清单4:while语句
sum = 0
n = 99
while n > 0:
sum += n
n -= 2
print(sum)
代码清单5:while语句无限循环
# 布尔表达式为常数1,始终为真值
while 1:
print('循环')
循环
循环
…
# 布尔表达式每次递归运算都为2,始终为真值
x, y = 2, 1
while x / y:
print('循环')
x = x * 2
y = y * 2
循环
循环
…
代码清单6:while语句实现str截取
string = 'abcd'
while string:
print(string)
# 该语句的递归计算是,每次从str的第2个字符开始截取
string = string[1:]
abcd
bcd
cd
d
代码清单7:嵌套while语句
j = 1
while j <= 2:
sum = 0
i = 1
name = input('请输入学生姓名:')
while i <= 2:
print ('请输入第%d门的考试成绩: '%i)
sum += int(input())
i += 1
avg = sum / (i-1)
print(name, '的平均成绩是%d'%avg)
j += 1
print('学生成绩输入完成!')
请输入学生姓名:小明
请输入第1门的考试成绩:
98
请输入第2门的考试成绩:
88
小明 的平均成绩是93
请输入学生姓名:小红
请输入第1门的考试成绩:
65
请输入第2门的考试成绩:
100
小红 的平均成绩是82
学生成绩输入完成!
代码清单8:break语句的使用
# break语句用于for循环
string = "Python"
for i in string:
# 遍历至string中的字符n时,不再执行else代码块
if i == 'n':
break
else:
print("letter:{}". format(i))
letter:P
letter:y
letter:t
letter:h
letter:o
# break语句用于while循环
counts = 0
while True:
print(counts)
counts += 1
# 满足counts等于3时跳出循环,不再进入循环体
if counts == 3:
break
0
1
2
代码清单9:break语句用于嵌套循环结构
# 第1层循环,遍历次数为2
for i in range(2):
print("-----%d-----" %i)
# 第2层循环,遍历次数为10
for j in range(10):
# 使用break语句,j>1时不执行循环体
if j > 1:
break
print(j)
-----0-----
0
1
-----1-----
0
1
代码清单10:continue语句用于循环结构
# 当i等于1或3时,跳过continue后的print语句
for i in range(0,5):
if i == 1 or i == 3:
continue
print(i)
0
2
4
# 如果遇到偶数,跳过continue后的print语句
counts = 0
while counts < 10:
counts += 1
if counts % 2 == 0:
continue
print(counts)
1
3
5
7
9
代码清单11:continue语句用于嵌套循环结构
# 第1层循环,遍历次数为2
for i in range(2):
print("-----%d-----" %i)
# 第2层循环,遍历次数为5
for j in range(5):
# 当j等于2或4时,不执行循环体
if j == 2 or j == 4:
continue
print(j)
-----0-----
0
1
3
-----1-----
0
1
3
代码清单12:pass语句
for element in "Python":
# element为y时,不做任何操作,不会被输出
if element == "y":
pass
else:
print(element)
P
t
h
o
n
counts = 0
while counts < 5:
counts += 1
# i=3时,不执行循环体
if counts == 3:
pass
else:
print(counts ** 2)
1
4
16
25
[操作语句 for变量 in 序列 if 条件表达式]
操作语句:接收操作语句,表示执行一段代码。无默认值 序列:接收序列,表示遍历范围。无默认值 条件表达式:接收布尔表达式,表示判断条件是否成立。无默认值
代码清单13:使用列表推导式生成list
vec = [-4, -2, 0, 2, 4]
# 用vec中元素的倍数,创建一个数组
print([x * 2 for x in vec])
[-8, -4, 0, 4, 8]
# 创建一个包含2元tuple的list
print([(x, x ** 2) for x in range(6)])
[(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
代码清单14:包含条件语句的列表推导式
# 过滤list,删除list中的负数
print([x for x in vec if x >= 0])
[0, 2, 4]
代码清单15:常规方式与列表推导式对比
# 创建一个平方数list:常规方式
squares = []
for x in range(10):
squares.append(x ** 2)
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 创建一个平方数list列表推导式
squares = [x ** 2 for x in range(10)]
print(squares)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
代码清单16:包含嵌套循环的列表推导式
# 打印由tuple组成的list,tuple中i由0至2,j由0至2
[(i, j) for i in range(0, 3) for j in range(0, 3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
# 打印由tuple组成的list,i在0至2之间且小于1,j在0至2之间且大于1
[(i, j) for i in range(0, 3) if i < 1 for j in range(0, 3) if j > 1]
[(0, 2)]
(*本文为AI科技大本营转载文章,转载请联系作者)
◆
精彩推荐
◆
推荐阅读
dfuse、慢雾科技、MYKEY共同出席,与你探讨区块链数据架构和项目上链那些事!
大数据工程师手册:全面系统的掌握必备知识与工具
演讲实录:知乎算法团队负责人孙付伟:Graph Embedding在知乎的应用实践
NASNet:神经架构搜索网络在图像分类中的表现
实操 | 从0到1教你用Python来爬取整站天气网
我们到底该如何看待6G?
互联网大佬为什么爱唱歌
惊呆!这辆悍马自己在跑跑跑跑跑跑跑!
你点的每个“在看”,我都认真当成了喜欢