Python基础------几种循环结构详解
在所有的编程语言中,循环结构是必不可少了,Python也一样。在python主要有一下几种循环结构:for…in…、while、range()三种最为常见。
1.for…in…
该格式在python中是最为常见的一种格式,使用极为广泛。
格式:for 参数 in 循环体:
pass
上述格式中,可以做循环体的内容有很多,如元组、列表、字符串等等。只要可以遍历、可循环的的内容均可作为循环体存在。
其中的参数,主要是用来存放每次循环体送来的单个元素,实现循环的作用。在实际使用中,常和if判断语句联合使用。
#input
str_01 = '时间都去哪了!!!'
for i in str_01:
print(i)
#output
时
间
都
去
哪
了
!
!
!
2.while
while循环和for…in…循环的不同之处在于,while要先将循环变量初始化或者直接使用while True 这种死循环形式。
格式:i = 0
while i >=10:
pass
i +=1
在我们平时使用中,这种格式使用频率,相比较于for…in…是比较低的。而对于while循环,最为常见的格式是:
格式:while True:
pass
该格式,在大部分项目中都会用到。
#input
while True:
print('hello world!!!__hello python!!!')
#output
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
hello world!!!__hello python!!!
.
.
.
.
.
.
3.range()
range()的使用主要是和for循环一起出现的。
range()的形式有三种:
range(stop) :默认从0开始,给出结束的int型参数即可
range(start,stop) :
range(start,stop,step)
上述中的stop参数,都是取不到的,结尾的参数为stop-1。这也是python的一大特点,我学习一个多月以来,所有用括号扩起来的循环或者取值,都是***左取右不取***
#input
for i in range(5):
print(i)
print('*'*10)
for x in range(1,7):
print(x)
print('*'*10)
for y in range(2,19,3):
print(y)
print('*'*10)
#output
0
1
2
3
4
**********
1
2
3
4
5
6
**********
2
5
8
11
14
17
**********
for循环搭配range()的形式,极为常见。如我们常见的九九乘法表,使用for循环和range()搭配的形式,就可以轻松完成。
九九乘法表——for循环搭配range()实现# 输入层数
#input
#九九乘法表,for循环++range()实现
a = int(input('请输入层数:'))
for i in range(1, 10):
for j in range(i, 10):
print('{}*{}={:<5d}'.format(i, j, i*j), end='')# 使用format格式化输出
print()
#output
请输入层数:9
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
4.循环中的else以及elif的使用
1) else
else 主要用于和 if 搭配使用。
格式:if 条件:
pass1
else:
pass2
上述格式中,如果if后面的条件成立(即为Ture)则运行pass1语句。条件不成立(即为flase),则运行else后面的pass2语句。
#input
salary = int(input('请输入你的工资:'))
if salary >=10000:
print('你的工资为{},恭喜你已经超过一线城市的平均水平'.format(salary))
else:
print("你的工资为{},加油,努力工资努力生活!!!".format(salary))
#output
请输入你的工资:12000
你的工资为12000,恭喜你已经超过一线城市的平均水平
2) elif
当出现的判断条件较多,我们需要进行较为精准的判断时,我们就需要使用elif来实现了。
格式:if 条件判断1:
elif 条件判断2:
elif 条件判断3:
else:
上述判断条件的执行顺序是:那个条件判断成立就执行那个后面的执行语句。若均不成立,这执行else后面的执行语句。
#input
age = 20
if age >= 6:
print('teenager')
elif age >= 18:
print('adult')
else:
print('kid')
#output
teenager
5.循环中的break和contiune
1) break
break的意思是:结束当前循环。
#input
i = 0
while i<10:
i+=1
if i==5: #当i=5时,结束整个循环
break
print("i=%d"%i)
#output
i=1
i=2
i=3
i=4
2)continue
意思为结束当前循环进入下一个循环
#input
i = 0
while i<10:
i+=1
if i==5: #当i=5时,结束当前循环进入下一个循环
continue
print("i=%d"%i)
#output
i=1
i=2
i=3
i=4
i=6
i=7
i=8
i=9
i=10
上面的循环中,当i = 5 时,不会执行contiune下面的语句,而是直接进入下一次循环。
6.python经典循环编程案例—绕圈圈面试题
当我们给定数值n = 5时,以下面的方式进行数据排列
解题思路:
①号转弯线的行索引与列索引总和为n-1;
②号转弯线的行索引与列索引相等;
③号转弯线的行索引等于列索引减1;
#input
def a_circle(SIZE):
array = [[0] * SIZE]
# 创建一个长度SIZE * SIZE的二维列表
for i in range(SIZE - 1):
array += [[0] * SIZE]
# 该orient代表绕圈的方向
# 其中0代表向下,1代表向右,2代表向左,3代表向上
orient = 0
# 控制将1~SIZE * SIZE的数值填入二维列表中
# 其中j控制行索引,k控制列索引
j = 0
k = 0
for i in range(1, SIZE * SIZE + 1):
array[j][k] = i
# 如果位于图4.2中①号转弯线上
if j + k == SIZE - 1:
# j>k,位于左下角
if j > k:
orient = 1
# 位于右上角
else:
orient = 2
# 如果位于图5.2中②号转弯线上
elif (k == j) and (k >= SIZE / 2):
orient = 3
# 如果j位于图5.2中③号转弯线上
elif (j == k - 1) and (k <= SIZE / 2):
orient = 0
# 根据方向来控制行索引、列索引的改变
# 如果方向为向下绕圈
if orient == 0:
j += 1
# 如果方向为向右绕圈
elif orient == 1:
k += 1
# 如果方向为向左绕圈
elif orient == 2:
k -= 1
# 如果方向为向上绕圈
elif orient == 3:
j -= 1
# 采用遍历输出上面的二维列表
for i in range(SIZE) :
for j in range(SIZE) :
print('%02d ' % array[i][j], end = "")
print("")
a = int(input("请输入一个整数:"))
a_circle(a)
#output
请输入一个整数:5
01 16 15 14 13
02 17 24 23 12
03 18 25 22 11
04 19 20 21 10
05 06 07 08 09