二、分支和循环
在学习分支、循环等内容之前,我们要先清楚Python代码的流程控制,流程控制:对计算机代码执行顺序的管理。流程分类:1.顺序结构;2.分支选择结构;3.循环结构。
1.分支选择
1.单项分支
如果学习过其他语言,那么对于if 都有过一定程度的了解了,例如c语言中
int a = 1;
if(a>=0)
{
print('a是正数');
}
而Python中,是依靠缩进去决定代码所属的代码块,本段代码的前两个输出是归if判断的,而第三个输出是与if无关的
age = 30
if age>=18:
print('your age is:',age)
print('adult')
print('ok')
之前学习中容易忽略掉的内容就是if其实是有返回值的,若判断满足if的条件,那么其实是会返回true的;因此,我们也经常能看到if被嵌套到其他语句中使用。
2.双项分支
3.多项分支
age = 20
if age>=6:
print('teenager')
elif age>=18:
print('adult')
else:
print('kid')
当有多项分支时,只有符合条件的首个分支会被执行,当有一个分支被执行时,与其平行的所有分支就被忽略掉了。
2.循环结构
1.while循环
# 循环输出 1-10 的数
i = 1
while i<=10:
print(i)
i = i + 1
# i += 1
死循环的应用
# 死循环的应用
while True:
k = input('请输入一个值:')
print('输入的内容是:',k)
if k == 'q':
break # 跳出循环
2.for … in 循环
遍历字符串
# 遍历字符串
for i in 'abcde':
print(i)
遍历列表
# 遍历列表:例:1-10求和
sum = 0
for x in [1,2,3,4,5,6,7,8,9,10]:
sum=sum+x
print(sum)
# 若想要获取下标
for i,n in enumerate(['a','b','c']):
print('第{}个元素:{}'.format(i,n))
遍历元组
# 遍历元组
for i in (10,40,80):
print(i)
遍历set{}结构
# 遍历set
for i in {10,40,80}:
print(i)
遍历字典:
# 遍历字典
a = {'name':'lsw','age':24,'sex':'male'}
for i in a:
print(i,":",a[i])
for k,v in a.items():
print(k,v)
注意:字典.items() 功能是
a = {'name':'lsw','age':24,'sex':'male'}
print(a.items())
# 结果:
dict_items([('name', 'lsw'), ('age', 24), ('sex', 'male')])
遍历嵌套的数据结构
# 遍历嵌套的数据结构
b = [('name','lsw'),('age','24'),('sex','male')]
for k,v in b:
print(k,v)
3.range()函数
# 循环生成0-9的值:
for i in range(10):
print(i,end=' ')
print(' ')
print('-'*30)
# 循环输出2-6的值:
for i in range(2,7):
print(i,end=' ')
print(' ')
print('-'*30)
# 循环输出0-50的值,步进为5
for i in range(0,50,5):
print(i,end=' ')
print(' ')
print('-'*30)
# 循环输出10-1的值
for i in range(10,0,-1):
print(i,end=' ')
print(' ')
print('-'*30)
range函数的作用之帮助我们快速生成一连串的序列
# 用range快速生成一个list列表
print(type(range(10)))
# 由此可知range并非list结构,而是一个独立的结构
print(list(range(10)))
4.break和continue语句以及循环中的else子句
这个的用法与c语言类似,break通常用于终止当前的代码段…
3.实例
99乘法表快速生成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z72dIKQd-1579702822317)(C:\Users\刘生伟\AppData\Roaming\Typora\typora-user-images\image-20200122175815105.png)]
分析:对于这种问题我们应该去注意行与列的关系,第一个乘数是1-9,可以放置到外层循环i,第二个乘数每行从1-i内层 循环
for i in range(1,10):
for j in range(1,i+1):
print('{}*{}={:<2}'.format(i,j,i*j),end=' ')
print('')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsXr3HGz-1579702822318)(C:\Users\刘生伟\AppData\Roaming\Typora\typora-user-images\image-20200122204746951.png)]
分析:外层i 第一个乘数9-1,内层j第二个乘数1-i
for i in range(9,0,-1):
for j in range(1,i+1):
print('{}*{}={:<2}'.format(i,j,i*j), end=' ')
print('')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JfCDxzjP-1579702822320)(C:\Users\刘生伟\AppData\Roaming\Typora\typora-user-images\image-20200122204832964.png)]
分析:由于要空出来,所以我们应该内外层都给他填满,还是按以前一样找两个乘数哪个适合做外层/内层循环
for i in range(1,10):
for j in range(1,10):
if j>=i :
print('{}*{}={:>2}'.format(i,j,i*j),end=' ')
else:
print('{} {} {:<2}'.format(' ',' ',' '),end=' ')
print('')
range(1,10):
for j in range(1,10):
if j>=i :
print(’{}{}={:>2}’.format(i,j,ij),end=’ ‘)
else:
print(’{} {} {:<2}’.format(’ ‘,’ ‘,’ ‘),end=’ ‘)
print(’’)