在编程中,有时需要让代码重复多次相似或相同的操作。比如输出列表中的逐个元素,我们通常不喜欢下面这种编程方式:
list1 = [0, 1, 2, 3, 4]
print(list1[0])
print(list1[1])
print(list1[2])
print(list1[3])
print(list1[4])
此时运行结果会依次输出列表的元素,但显然这会让代码显得冗余,而且当元素数量很庞大时这几乎就变成了一个不可能的任务,所以就要用到循环语句。
在Python中,循环语句分为有for循环和while循环两种。
for循环
for循环的流程图如下所示:
当需要需要遍历整个序列,或需要自定义循环次数,就可以使用for循环语句。for循环的语法为:
for i in sequence:
<执行语句>
i为变量,名字可任意指定,sequence为需要被遍历的序列。
例如,使用for循环来逐个输出列表内的元素:
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in list1:
print(i, end = ' ') #用end进行同行输出
#运行结果为0 1 2 3 4 5 6 7 8 9
如果想按顺序输出列表内前i个元素,或自定义循环次数,需要使用到python内置的函数range。
比如,遍历上面列表中的前五个元素:
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(5):
print(i, end = ' ')#输出结果为0 1 2 3 4
print(list(range(5))) #输出结果为[0, 1, 2, 3, 4]
最后一行代码表示,range函数本质上也是一种序列,当我们想把遍历次数作为参数给到range函数里,其实就是创建了一个从0数到n-1的一个序列,然后通过for循环来遍历这个序列。
注意,for循环中的变量i指向序列中的元素,而不是序列的索引,也不是循环次数。
list1 = [4, 5, 6]
for i in list3:
print (i, end = ' ') #end用于同行输出
#运行结果为4 5 6
while循环
while循环的流程如下图所示:
while语句的格式如下:
while <判断语句>:
<执行代码>
while语句一般用于需要达成某种条件才能跳出循环的情况。比如用while循环来计算2的最大多少幂次不超过2050,当值数值超过2050时跳出循环。(pow(a, b)代表a的b次方)
n = 0
while pow(2, n) < 2050: #判断条件为计算结果不超过2050
n = n + 1
print(n) #运行结果为12
如果while后的判断条件为1,就可以实现无限循环。
break和continue
break表示跳出或结束循环过程去执行新的语句。
continue表示结束本次迭代并进行下一次迭代,当循环体很庞大且存在多个需要跳过它的原因时很有用。
例如,通过循环打印一段字符串,当遇到字母a时跳过输出,遇到字母e时中断循环:
for i in 'Iamastudent':
if i == 'a':
continue #如果为a继续循环不进行其他操作
elif i == 'e':
break #如果为e跳出循环
else:
print(i, end = '') #end用于同行输出
#运行结果为Imstud
pass语句
pass语句代表不执行任何操作,和continue区别的地方在于,使用pass语句之后不结束本次迭代。
for i in 'python':
if i == 'p':
pass
print('Pass!')
elif i == 'y':
continue
print('Continue!')
else:
print(i, end = '')
代码的运行结果为:
从运行结果可以看出,当执行pass语句时,并没有结束本次迭代,继续执行了下一行的打印语句。而执行continue语句时,结束了本次迭代,下一行的打印语句并没有执行。
else子句
else子句也可以与for循环语句一起使用,用于在循环结束执行一段代码。
例如在逐个输出列表元素时,当循环结束之后打印一次"循环成功结束!"。
number = [1, 4, 5, 8]
for i in number:
print(i)
else:
print("循环成功结束!")
代码运行结果为:
不过由此会产生一些疑问,如果不使用else语句,直接在循环结束之后加一句print打印语句结果不也是一样吗?
设想接下来一种情况,如果有一些"病毒"数据存在于列表中,当检索到病毒数据时,需要立即跳出循环,并且不能输出"循环成功结束!"语句。
number = [1, 4, 5, 'virus', 8]
for i in number:
if i == 'virus':
print("Error!")
break
else:
print(i)
else:
print("循环成功结束!")
代码运行结果为:
由此可见,else子句在循环中也有其存在的理由。当时用break语句跳出循环时,是不执行else语句的。
标签:语句,Python,list1,else,while,循环,print From: https://blog.csdn.net/a4546565/article/details/137018301