8. Python3的基本类型(流程控制[循环结构])


在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体。当反复执行这个循环时,可以在合适的时候把循环条件改为假(False),从而结束循环。否则,程序一直执行就成了死循环。

1. while循环

1.1 while的一般语句形式

while 判断条件:
语句

#语法格式
[init_statements]
while test_expression :
	body_statements
	[iteration_statements]

代码测试样例:

In [1]: #循环的初始条件

In [2]: count = 0

In [3]: #当count小于100时,执行循环体

In [4]: while count < 100 :
   ...:     print ('count: ', count)
   ...:     #迭代语句
   ...:     count += 1
   ...: print ("循环结束.")
count:  0
count:  1
.......()
count:  98
count:  99
循环结束.

温馨提示:使用循环时,一定要考虑条件为假的时候,否则循环将是死循环。

1.2 while 循环使用 else 语句

在 while … else 在条件语句为 false 时执行 else 的语句块:
代码测试样例:

In [9]:  score = 0 #定义得分初始值为0
In [10]: while score < 60 : #条件判断分数小于60分,为不及格
    ...:     print ('您的分数为: ', score)
    ...:     score += 10
    ...: else :
    ...:     print ('您合格了。')
    ...:
您的分数为:  0
您的分数为:  10
您的分数为:  20
您的分数为:  30
您的分数为:  40
您的分数为:  50
您合格了。

1.3 while 循环语句遍历列表和元组

列表和元组的元素都是有索引的,因此程序可通过while循环、列表或元组的索引来实现遍历列表和元组的所有元素。

代码测试样例:

In [11]: t_tuple = ('小明', '小红', '小丽', '苍穹') #定义一个元组

In [12]: i = 0

In [13]: #只有i小于len(t_tuple),继续执行循环体

In [14]: while i < len(t_tuple) :
    ...:     print (t_tuple[i]) #根据i来访问元组的元素
    ...:     i += 1
    ...:
小明
小红
小丽
苍穹

列表的样例:

In [16]: l_list = [12, 14, 15, 19, 30, 32, 46, 109, 230] #定义列表

In [17]: l1 = [] #定义保存整除3的元素

In [18]: l2 = [] #定义保存除以31的元素

In [19]: l3 = [] #定义保存除以32的元素

In [20]: #只要l_list还有元素就继续执行循环体

In [21]: while len(l_list) > 0 :
    ...:     #弹出l_list的最后一个元素
    ...:     ele = l_list.pop()
    ...:     #如果ele%3不等于0
    ...:     if ele % 3  == 0 :
    ...:         l1.append(ele) #添加元素到了l1中
    ...:     elif ele % 3 == 1:
    ...:         l2.append(ele) #添加元素到l2中
    ...:     else :
    ...:         l3.append(ele) #添加元素到l3中
    ...: print ("整除3:", l1)
整除3[30, 15, 12]

In [22]: print ("除以3余1的:", l2)
除以31: [109, 46, 19]

In [23]: print ("除以3余2的:", l3)
除以32的: [230, 32, 14]

1.4 简单语句组

类似if语句的语法,如果你的while循环体中只有一条语句,你可以将该语句与while写在同一行中, 如下所示:

In [27]: flag1 = True

In [28]: while(flag1): print ("你看到我了,证明flag1是真,我要进入死循环")
你看到我了,证明flag1是真,我要进入死循环
你看到我了,证明flag1是真,我要进入死循环
.......
ctrl+c中断死循环

2. for语句

for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for-in 循环专门用于遍历范围、列表、元素和字典等可迭代对象包含的元素,

for循环的一般格式如下:

for variable in sequence:
    statements
else:
    statements

for-in循环语法格式:

for variable in string/range/集合等:
	statements

代码测试样例:

In [31]: def testForIn():
    ...:     s=input("请输入一个数字,我返还给你他的阶乘!,请输入:")
    ...:     i= int(s)  #转换成整型
    ...:     result = 1
    ...:     #使用for-in循环遍历范围
    ...:     for num in range(1, i+1):
    ...:         result *= num
    ...:     print (result)
    ...:

In [32]: testForIn()
请输入一个数字,我返还给你他的阶乘!,请输入:4
24

2.1 使用for-in循环遍历列表和元组

列表和元组有几个元素,for-in循环的循环体就执行几次,针对每个元素执行一次,循环计数器会依次被赋值为元素的值。
代码测试样例:

In [33]: l = ['haohaia', 'balabala', 'go home'] #定义列表

In [34]: for i in l:
    ...:     print (i)
    ...:
haohaia
balabala
go home
In [1]: t1_tuple = (1, 1.0, 2.0, 5, 'crazy', 'hello', 10, 20, 'wow') #定义元组

In [2]: i_count = 0 #定义浮点数,整数的计数器

In [3]: s_count = 0 #定义字符串的计数器

In [4]: for i in t1_tuple:
   ...:     if isinstance(i, int) or isinstance(i, float):
   ...:         print (i)
   ...:         i_count += 1
   ...:     else :
   ...:         print (i)
   ...:         s_count += 1
   ...:
1
1.0
2.0
5
crazy
hello
10
20
wow

In [5]: print (i_count)
6

In [6]: print (s_count)
3

2.2 使用for-in循环遍历字典

使用for-in循环遍历字典其实也是通过遍历普通列表来实现的,字典包含三个方法:
items() : 返回字典中所有key-value对的列表
keys() :返回字典中所有的key的列表
values() :返回字典中所有value的列表
所以遍历字典,就可以完全用上面的方法进行遍历

In [10]: for key, value in my_dict.items():
    ...:     print ('key:', key)
    ...:     print ('value:', value)
    ...:
key: 语文
value: 98
key: 数学
value: 10
key: 英语
value: 60

In [12]: for key in my_dict.keys():
    ...:     print ('key:', key)
    ...:
key: 语文
key: 数学
key: 英语

In [13]: for value in my_dict.values():
    ...:     print ('value:', value)
    ...:
value: 98
value: 10
value: 60

3 循环嵌套

把一个循环放到另一个循环里,就形成了循环嵌套。
代码测试样例:

In [16]: for i in range(0, 5):
    ...:     j = 0
    ...:     #内层循环嵌套
    ...:     while j < 3:
    ...:         print ('i的值为: %d, j的值为%d' %(i, j))
    ...:         j += 1
    ...:
i的值为: 0, j的值为0
i的值为: 0, j的值为1
i的值为: 0, j的值为2
i的值为: 1, j的值为0
i的值为: 1, j的值为1
i的值为: 1, j的值为2
i的值为: 2, j的值为0
i的值为: 2, j的值为1
i的值为: 2, j的值为2
i的值为: 3, j的值为0
i的值为: 3, j的值为1
i的值为: 3, j的值为2
i的值为: 4, j的值为0
i的值为: 4, j的值为1
i的值为: 4, j的值为2

4 for的表达式

for表达式的语法格式

[表达式 for 循环计数器 in 可迭代对象]
In [20]: n_range = range(10)

In [21]: n_list = [x * x for x in n_range]

In [22]: print (n_list)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值