Python基础------几种循环结构详解

在所有的编程语言中,循环结构是必不可少了,Python也一样。在python主要有一下几种循环结构:for…in…、while、range()三种最为常见。
Python循环结构

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()的形式有三种:

  1. range(stop) :默认从0开始,给出结束的int型参数即可
  2. range(start,stop) :
  3. 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:
		 <执行1>
	 elif 条件判断2:
		 <执行2>
	 elif 条件判断3:
		 <执行3>
	 else:
		 <执行4>

上述判断条件的执行顺序是:那个条件判断成立就执行那个后面的执行语句。若均不成立,这执行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 

绕圈圈部分:由于个人初学写的代码逻辑比较乱,所有摘抄cui_yonghua大佬

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐