Python3.7程序的循环结构

1、遍历循环

遍历某个结构形成的循环运行方式

for <循环变量> in <遍历结构>:
    <语句块>

-由保留字for和in组成,完整遍历所有元素后结束

-每次循环,所获得元素放入循环变量,并执行一次语句块

2、遍历循环的应用

(1)

#计数循环(N)次
for i in range(N):    #可以不使用i
    <语句块>



for i in range(M,N,K):
    <语句块>

-遍历由range()函数产生的数字序列,产生循环

# range对象,保存的不是所有的数据,而是生成数据的算法
# 指定终止值
# r = range(10)
# 指定起始、终止值,左闭右开
# r = range(2, 10)
# 指定起始、终止、步进
r = range(2, 10, 2)

# print(r, type(r))
# 可以遍历
for i in r:
    print(i)

# 可以转换为列表
print(list(r))

运行结果:
2
4
6
8
[2, 4, 6, 8]

 

(2)字符串遍历循环

for c in s:
    <语句块>

-s是字符串,遍历字符串每个字符,产生循环

>>> for c in  "Python123":
	print(c,end=",")
	
P,y,t,h,o,n,1,2,3,

(3)列表遍历循环

for item in ls:
    <语句块>

-ls是一个列表,遍历其每个元素,产生循环

>>> for item in [123,"PY",456]:
	print(item,end=",")

	
123,PY,456,

注 列表、集合、字典生成式:

print([i for i in range(1, 11)])
print([i*2 for i in range(1, 11)])
print([i*i for i in range(1, 11)])
print([str(i) for i in range(1, 11)])
print([i for i in range(1, 11) if i % 2 == 0])
print(['hello' for i in range(1, 11)])
# 也可以生成集合
print({i for i in range(1, 11)})
# 还可以生成字典
print({i: i for i in range(1, 11)})

运行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
[2, 4, 6, 8, 10]
['hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello', 'hello']
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10}

 

(4)文件遍历循环

for line in fi:
    <语句块>

-fi是一个文件标识符,遍历其每行,产生循环

(5)无限循环

由条件控制的循环运行方式

while <条件>:
    <语句块>

-反复执行语句块,直到条件不满足时结束   (ctrl + C退出执行)

>>> a=3
>>> while a >0:
	a= a-1
	print(a)

2
1
0

练习:

# 遍历字符串
for i in 'hello':
    print(i,end=',')
print()

# 遍历列表
lt = [1, 2, 3]
for i in lt:
    # 可以手动获取下标
    print(i, lt.index(i))

# 遍历列表,可以直接使用下标
for index, value in enumerate(lt):
    print(index, value)

# 遍历字典
d = {'a': 'apple', 'b': 'banana', 'c': 'car', 'd': 'dog'}
for key in d:
    # 遍历的是键,值需要单独获取
    print(key, d[key])

# for key, value in d.items():
# 与上面的方式是等价的
for key, value in dict.items(d):
    print(key, value)

运行结果:
h,e,l,l,o,
1 0
2 1
3 2
0 1
1 2
2 3
a apple
b banana
c car
d dog
a apple
b banana
c car
d dog

3、循环控制保留字

break 和continue

-break跳出并结束当前整个循环,执行循环后的语句

-continue结束当次循环,继续执行后续次数循环

-break和continue可以与for和while循环搭配使用

>>> for c in "PYTHON":            >>> for c in "PYTHON":  
	if c == "T":                      if c == "T":
		continue                            break
	print(c,end="")                   print(c,end="")

	
PYHON                             PY
>>> s="PYTHON"                     >>> s="PYTHON" 
>>> while s !="":                  >>> while s !="":
	for c in s:                        for c in s:
		print(c,end="")                   if c == "T":
	s = s[:-1]                               break
PYTHONPYTHOPYTHPYTPYP                     print(c,end="")
                                       s = s[:-1]
                                   PYPYPYPYPYP 

4、循环的拓展

for <循环变量> in <遍历结构>:         while  <条件>  :
    <语句块1>                                <语句块1>
else:                                 else
    <语句块2>                                <语句块2>

循环与else

-当循环没有被break语句退出时,执行else语句块

-else语句块作为“正常”完成循环的奖励

-这里else的用法与异常处理中else用法相似

>>>for c in "PYTHON" :                >>>for c in "PYTHON" :
      if c =="T" :                           if c == "T" :
         continue                               break
      print(c,end="")                        print(c,end="")
   else :                                else :
      print("正常退出")                       print("正常退出")

PYHON正常退出                          PY

练习:

from random import randint
from time import sleep

print('人在江湖飘,哪能不挨刀...')
print('人在江湖飘,哪能不挨刀...')

while True:
    # 用于占位的空语句
    # pass
    jiege = randint(1, 5)
    feihu = randint(1, 5)
    # 做差
    cha = jiege - feihu
    # abs:求绝对值
    if abs(cha) == 1 or abs(cha) == 4:
        if cha == 1 or cha == -4:
            print('杰哥:{},飞虎:{},杰哥胜出,飞虎喝酒'.format(jiege, feihu))
        else:
            print('杰哥:{},飞虎:{},飞虎胜出,杰哥喝酒'.format(jiege, feihu))
        break
	else:
		print('不分伯仲,继续...')

	# 睡眠1秒
	sleep(1)

小结:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值