while与for循环
while循环结构的补充
-
死循环
真正的死循环是一旦执行,CPU功能消耗就会急速上升,直到系统采取紧急措施,尽量不要让CPU长时间不间断运算
死循环案例
eg1: while True: print('hello world') eg2: count = 10 while True: count *=2 # 计算机一直在运算,导致CPU一直急速上升
-
嵌套及全局观
1.当一个循环里有几个break时,每个break只能结束它所在的那一层循环里
2.如果想一次性结束几个while的嵌套,就应该写几个break
3.如果不想反复写break,可以使用全局标志位
eg1: while True: username = input('username>>>:') password = input('password>>>:') if username == 'kiki' and password == '123': while True: cmd = input('请输入你的指令>>>:') if cmd == 'q': break print('正在执行你的指令:%s' %cmd) break else: print('用户名或者密码错误') eg2:再加一套 while True: print('嘿嘿嘿') while True: username = input('username>>>:') password = input('password>>>:') if username == 'kiki' and password == '123': while True: cmd = input('请输入你的指令>>>:') if cmd == 'q': break print('正在执行你的指令:%s' %cmd) break else: print('用户名或者密码错误') break eg3: # 全局标志位 is_happy = True while is_happy: username = input('username>>>:') password = input('password>>>:') if username == 'kiki' and password == '123': while is_happy: cmd = input('请输入你的指令>>>:') if cmd == 'q': is_happy = False print('正在执行你的指令:%s' %cmd) else: print('用户名或者密码错误') 图如下
for循环语法
循环结构的第一种循环方式是for,for循环可以做的事情while循环都可以实现,for循环取值是遍历所有的数据值,使用起来比while更简单
for循环语法
for 变量名 in 待遍历的数据(可迭代的对象):#目前可迭代对象是字符串、列表、字典、元组、集合就可,后面会专门讲解的
for 循环体代码
eg:
for item in [11, 33, 44]:
print(item)
运行的结果:
11
22
33
注意点:
第一种情况是“字符串“
item = 'hello world'
for i in item:
print(i) # 打印的结果是:h e l l o w o r l d 单个单个字符,空格也算一个字符
第一种情况是“字典”
d = {'name':'kiki',
'passworld':123}
for i in d:
print(i) # 只有键参与遍历 打印结果:name password
for 循环语法结构中的变量名如何命令
1.见名知意
2.如果遍历出来的数据值没有具体的含义,可以使用常用
i j k item v
for循环体代码中如果执行到break也会直接结束整个for循环
for循环体代码中如果执行到continue也会结束当前循环直接开始下一次循环
for 变量名 in 待遍历的数据:
for循环体代码
else:
for循环体代码没有被break强制结束的情况下运行完毕之后 运行
for 循环应用案例
eg: while循环与for循环的区别
1.用while遍历
name_list = ['kiki', 'kecin', 'toy', 'jason']
#用while 遍历列表
# 循环打印出列表中每一个数据值(while 索引取值>>>:超出范围会报错)
count = 0 # count是索引
while count<4: #索引不能超过3
print(name_list[count])
count += 1
2.用for遍历
for i in name_list:
print(i)
range方法
rang 可以简单的理解为是帮我们产生一个内部含有多个数字的数据
for i in range(100): # 起始位置为0,终止位置为100,相当于【0,100)
print(i)
for j in range(10,20): # 第一个为起始位置,第二个个终止位置
print(j)
for k in range(1,20,2): # 第三个为等差值,默认不写1
print(k) # 打印出来是1-19的奇数
range在python2 和python3的区别
在python2中
range()
直接产生一个列表 内部含有多个数值
xrange()
其实就是python3里面的range
在python3中
range()
类似于一个工厂 不会占用太多的内存空间 要就生产
图如下
range实战案例
网络爬虫
网络爬虫
从网路上爬取数据的手段
项目需求
爬取所有页面的数据(博客园)
找寻规律
https://www.cnblogs.com/
https://www.cnblogs.com/#p2
https://www.cnblogs.com/#p3
https://www.cnblogs.com/#p4
大胆猜测:第一页是 https://www.cnblogs.com/#p1
编写代码产生博客园文章前两百页的网址
1.第一种方式
for i in range(1,201) :
print('https://www.cnblogs.com/#p%s' %i)
2.第二种方式
# 1.先定义网址的模板
base_url = 'https://www.cnblogs.com/#p%s'
for i in range(1, 201):
print(base_url % i)
# 通过代码朝上述的网址发送请求获取页面数据 通过
'''
分页的规律 不同的网址有所区别
1.在网址里面有规律
2.内部js文件动态加载(未解)
'''
作业
1.计算1-100所有的数之和
# 1.for 来遍历
# 2.定义初始的值为0
sum=0
for i in range(1,101):
sum +=i #遍历的值赋值给sum
i += 1 # i进行加加
print(sum) #最终输出总值
# 2.判断列表中数字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]
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]
print(l1.count(2))
# 3.编写代码自动生成所有页网址(注意总共多少页)
# https://movie.douban.com/top250
for i in range(1,251):
print('https://movie.douban.com/top%s' %i)
4.编写代码打印出下列图形(ps:for循环嵌套)
'''
*****
*****
*****
*****
'''
for i in range(4):
for k in range(5):
print('*',end='')
print('')
标签:控制,流程,range,break,while,循环,print,password
From: https://www.cnblogs.com/zhanglanhua/p/16739348.html