python笔记(控制流)
1.条件语句
(1)if (条件): (执行动作)
例:a=4,b=1000,当a中数字低于5时,用b中数字补充
a=4
b=1000
if a<5:
a+=1
b-=1
print(a,b)
5 999
注意,上面这个代码只循环一次,如果a=3,b=1000,那么输出则为:4 999
(2)
if (条件): (执行动作)
elif(条件):(执行动作)
else(条件):(执行动作)
例:当a=1时输出“one”,当a=2时输出“two”,当a=3时输出“three”,不满足以上则输出“No”
a=2
if a==1:
print('one')
elif a==2:
print('two')
elif a==3:
print('three')
else:
print('No')
two
2.For循环语句
for…in…:迭代循环
例:将“name”列表中的元素逐个输出,并将首字母大写
names=['tom','mary','jack','william']
for name in names:
'''
这句代表将“names”中的元素逐一代入“name”,其中的“name”本身是没什么意义的
他只是一个“容器”,去其他变量名也可以,但一般默认取列表名的单数
'''
print(name.title()) #.title()表示首字母大写
Tom
Mary
Jack
William
循环迭代处理列表
例:将“name”列表中元素的首字母大写并输入new_names列表
names=['tom','mary','jack','william']
for name in names:
new_names.append(name.title())
print(new_names)
[‘Tom’,‘Mary’,‘Jack’,‘William’]
range():重复操作若干遍
例:重复打印三遍“I like apple”
for a in range(3): #同前面,这里的a也没有意义,只是一个容器
print('I like apple')
I like apple
I like apple
I like apple
range()函数的默认值:
range(start=0,stop,step=1)
从零开始,到“”(用户自己输入),间隔为1。
可以通过调整start,stop和step三个参数来控制range函数
例:输出50-100间的所以偶数
a=list(range(50,101,2)): #注意,这里是算头不算尾的,所以如果要包含100,则需要stop到101
print(a)
[50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98,100]
同样,可以利用range()辅助for循环实现本章节第一个问题
例:将“name”列表中的元素逐个输出,并将首字母大写
names=['tom','mary','jack','william']
for index in range(len(names)): #range循环次数为names中元素的数量,这里等于4,所以index里面是数字(0,1,2,3)
names[index]=names[index].title() #即列表元素逐个输出(names[0],names[1]...)
print(names)
[‘Tom’,‘Mary’,‘Jack’,‘William’]
例:将names中名字全部小写,并且将姓和名用"_"连接
names=['Zhang San','Li si','Wang wu']
names_new[] #创立一个新列表用于储存
for name in names:
names_new.append(name.lower().replace(' ','_'))
'''
.lower()表示转换为小写
.replace('a','b')表示将文中的“a”全部转换为“b”
'''
print(names_new)
[‘zhang_san’, ‘li_si’, ‘wang_wu’]
循环迭代处理字典
一般的迭代情况下,只会输出字典中的关键字,而不会输出解释
例:分别打印names字典中的几个关键字
names={'Zhang San':'He is a handsome man',
'Li Si':'He is very interesting',
'Wang Wu':'He is my father'}
for key in names:
print(key)
Zhang San
Li Si
Wang Wu
如果要同时输出关键字和其解释,则需要用的python自带的一个函数——items(),表示绑定
例:打印names字典中的几个关键字极其解释
names={'Zhang San':'He is a handsome man',
'Li Si':'He is very interesting',
'Wang Wu':'He is my father'}
for key,value in names.items(): #将names中的关键词和解释绑定在一起
print('Name:{} Saying:{}'.format(key,value))
Name:Zhang San Saying:He is a handsome man
Name:Li Si Saying:He is very interesting
Name:Wang Wu Saying:He is my father
组合打包迭代函数——zip(),表示把多个元素组合
例:给names中的名字标号
names=['Jack','Tommy','Mary']
numbers=[1,2,3]
print(list(zip(numbers,names)))
[(1, ‘Jack’), (2, ‘Tommy’), (3, ‘Mary’)]
除此之外,我们可以利用上面的range()函数和for循环实现语句
names=['Jack','Tommy','Mary']
for i,name in zip(range(len(names)),names):
print(i+1,name) #range()从零开始计数,因此要加一实现从一开始
1 Jack
2 Tommy
3 Mary
上面的语句思路较为复杂,实际可以利用列举函数——enumerate来用更加简洁的语句实现
names=['Jack','Tommy','Mary']
for i,name in enumerate(names):
print(i+1,name)
1 Jack
2 Tommy
3 Mary
zip()可以打包元素,当然也可以拆开之前打包的列表,即反向打包——zip(*)
例:将上述例中的已打包的列表重新拆开
numbers_names= [(1, 'Jack'), (2, 'Tommy'), (3, 'Mary')]
numbers_new,names_new=zip(*numbers_names)
print(names_new)
(‘Jack’, ‘Tommy’, ‘Mary’)
zip()可以实现较多元素的整合
例:将a,b,c,d四个列表中的元素一一对应整合,其中a为主键,b,c,d为属性
a=['apple','banana','cat','dog']
b=[1,2,3,4]
c=['9:30','11:15','18:20','22:53']
d=['A','B','C','D']
datas=[]
for data in zip(a,b,c,d): #将a,b,c,d打包整合逐个代入data
datas.append('{}:{},{},{}'.format(*data)) #将data中的元素拆开并逐个通过format输入{}中,再通过append逐个插入datas列表中
print(datas)
[‘apple:1,9:30,A’, ‘banana:2,11:15,B’, ‘cat:3,18:20,C’, ‘dog:4,22:53,D’]
3.While循环语句
while…:判断循环
当while后面跟的条件判断为True时,执行下面的语句
下面的语句执行完成后,会再次回到while后面的条件,重新进行判断,若为True则再一次执行下面的语句
不断重复,直到while后面的条件为False,结束循环
break:终止循环
如果在while循环过程中执行到了break命令,则直接终止循环
continue:重新循环
如果在while循环过程中执行到了continue命令,则不进行后续命令,直接重新开始该循环
注意:break是直接终止循环,即跳出循环,而continue是停止后续命令,重新开始这个循环
例:设计程序,使其能够判断用户输入的数据是否为偶数,并且设计退出方法
while True: #这里的条件直接设定为True,也就是无条件直接开始循环
value=input('Number[enter q to quit]:')
if value == 'q':
break #如果输入字母“q”则终止循环(即退出程序)
number=int(value)
if number % 2 == 0:
continue #如果输入偶数,则不执行任何命令,并重新开始循环
print('It is not even number') #如果不满足上面两个“if”,则执行该条命令