流程控制之循环(二)
while循环之补充说明
- 死循环
死循环的意思是一旦程序运行就不会自动停止
像上图所示的这种就是一个死循环,但还不是一个真正的死循环
真正的死循环是一旦程序运行,电脑的CPU利用率会急速上升,直至电脑采取紧急措施
程序执行前电脑的CPU利用率
程序执行后的CPU利用率
所以我们在以后编写程序的时候千万不要写出来一个死循环(自己电脑CPU烧了是小事,公司服务器出问题了那就BBQ了)
ps:我们在使用电脑时尽量不要让电脑的CPU长时间不间断运行
- 嵌套以及全局标志位
小知识:
- 一个break只能结束它所在的那一个循环体代码
- 想要一次性结束所有的循环体代码有几个while的嵌套就应该写几个break
- 如果不想写break,可以使用全局标志位
全局标志位:
看到这个名字就知道它很重要,概括的说就是程序中修改一次之后程序中所有有它的地方都会跟着修改从而使程序作出相应的改变
eg:
is_flag = True
while is_flag:
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and password == '123':
while is_flag:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
break
print('正在执行您的指令:%s' % cmd)
break
else:
print('用户名或密码错误')
比如,在这个程序中我们写了两个while的嵌套,当我们想要一次性结束时,就需要写两个break,且break的位置需要与循环体代码相对应,如果我们不想写break,想用全局变量只需要一点小小的改动就行
is_flag = True
while is_flag:
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and password == '123':
while is_flag:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
is_flag = False
print('正在执行您的指令:%s' % cmd)
else:
print('用户名或密码错误')
像这样,break去掉以后加一个is_flag = False,那么程序就会整体直接结束,而我们所加的就是一个全局变量
流程控制之for循环
for循环做到的事情while都能做到,while能做到的事情for不一定能做到,只是for循环在某些情况下的应用会比while更方便更简单
for循环主要应用于获取一些内部可以存储数据的数据的内部数据值
for循环语法结构:
for 变量名 in 待遍历的数据:
for循环体代码
eg:有一个列表[1, 2, 3, 4, 5, 6],我们需要循环打印出列表里的每一个数据值
num_list = [1, 2, 3, 4, 5, 6]
# for循环写法
for i in num_list:
print(i)
# while循环写法
count = 0
while count < 6:
print(num_list[count])
count += 1
在这个例子中我们可以看到第一个for循环的代码远远少于while循环,第二个当列表内的数据值的数量有变动时,for循环不需要动任何东西但是while循环需要修改条件不太方便
for循环的特点:
- 擅长遍历取值
- 不需要结束条件,遍历完以后自动结束
for循环主要遍历的数据类型是可以存储数据值的数据类型,字符串、列表、字典、元组、集合都是
字符串与字典稍微特殊
字符串遍历的是单个单个的字符
字典则是只有键参与遍历
for循环结构中变量名的命名
首先第一个尽量做到见名知意,第二个如果遍历出来的数据值没有具体的含义,那么就随便,但是推荐使用常用的,如:i j k v
小知识
-
break与continue在for循环中的用法与while循环一致
-
for循环结构也可以加else
for 变量名 in 待遍历的数据: for循环体代码 # 遇到break整个程序即停止,下面的else不会运行 else: for循环体代码没有被break强制结束且运行完毕之后才运行的代码
range方法
range可以简单的理解为是一个可以帮我们产生多个数字的数据
eg:
for i in range(101): # 起始位置为0 终止位置为100 print(i) # [0,.......100]
当然,range的写法不止这一种,还可以这样写
for i in range(10, 20): # 第一个为起始位置 第二个终止位置 print(i) # 或者这样写 for i in range(1, 20, 2): # 第三个数为等差值 默认不写为1 print(i)
range小知识
range()在python2余python3中虽然长得一样但是产生的效果不一样,在python2中会产生一个内部存放多个数据值的列表,在python3中则只会产生一个像第二种range写法那样的数据,只要在范围内,我们需要哪个数据它就会产生哪个数据
在python2中range还有一种写法xrange(),这其实就是python3中的range
作业
- 计算1-100所有的数之和
num = 0
for i in range(1, 101):
num += i
print(num)
- 判断列表中数字2出现的次数
l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
num = 0
l1 = [11, 2, 3, 2, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 2, 2, 2, 3, 2]
for i in l1:
while i == 2:
num += 1
break
print(num)
- 编写代码自动生成所有页网址(注意总共多少页)
https://movie.douban.com/top250
URL = ('https://movie.douban.com/top%s')
for i in range(1, 251):
print(URL % i)
- 编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
for i in range(4):
for j in range(5):
print('*', end='')
print()
标签:控制,num,流程,while,break,range,循环,print
From: https://www.cnblogs.com/zyg111/p/16739292.html