今日内容总结

一、while循环内容补充

1、死循环

通过昨天的学习我们知道了当while的判断条件一直符合的情况下,我们会进入死循环,当程序的运算量比较小的时候,我们并没有什么感觉,只是需要手动结束代码的运行,但是当内部的运算变复杂或是内部的数据值变得很大的时候,内存和cpu的资源会被快速被占用,如果没有提前发现并结束代码的运行,计算机就会死机,之后需要重启才能使用。现在大家用的都是笔记本,可以在死循环运行的时候明显感受到cpu在燃烧,如果把这个死循环放到服务器中,可能会出现服务器着火爆炸之类的事。

# 这里举两个例子,把数据值变的很大的死循环。
# 1、使用乘法(*),出现较慢增长的死循环。这里可能效果会不明显,可以通过更改倍数或是多开几个程序同时运行来达成目标——死机。
count_test = 10
while True:
count_test *= 2 # 2、使用乘方(**),出现数据增长较快的死循环,简称死得快。
count_test = 10
while True:
count_test **= 2

2、嵌套和全局标志位

嵌套

#依旧是上面的例子,增加一些功能
#先输入拥有的钱的数量
a = int(input('请输入数字'))
#这里就进行判断了
while a > 500:
#大于500就去玩
print('我们想去哪就去哪')
a -= 100
while a > 1000:
#如果大于1000就连着玩直到少于500
a -= 200
print('我们有很多钱,还能再爽一次') else:
print('没钱什么都做不了')

ps:嵌套出现的时候,只需要把对应从属关系的循环结构或是分支结构放在一起,并把他们一块块分割开研究,就可以比较清晰的得到运行顺序。

全局标志位

嵌套使用while语句的时候,while语句的判断处的判断条件都可以通过绑定变量名的方式,在满足条件时快速结束循环,而使用break时需要频繁插入break来达成结束循环的操作。代码展示在:三、break和continue的生效范围

二、循环结构之for循环

概念介绍

for循环也是循环结构的一种,但是和while不同的是,for循环并不会出现死循环,因此我们今后的使用中for会比较常见。

for循环的功能就是把一个对象中的所有数据一个个提取出来。而这个一个个提取数据的过程叫做遍历。

for循环结构:

for 变量名 in 需要遍历的对象:

​ 表达式

可以遍历的数据类型:所有可以索引取值的数据类型(字符串、列表、元组、集合)和字典的k值。

for循环中的变量名也要尽量做到见名知意,如果感觉有困难,可以用一些常见的字母或者单词表示。

1、for结构

for 变量名 in 需要遍历的对象:

​ 表达式

2、for...else结构

for 变量名 in 需要遍历的对象:

​ 表达式

else:

​ 表达式

这里的else结构和while结构下的else结构一样,都是在不能进入循环后执行一次,并不会跟着循环。

三、break和continue的生效范围

在昨天我们学习了break和continue的用法,但是昨天并没有出现很复杂的嵌套情况,而break和continue都是有生效范围的,并不能一次性结束所有的循环语句或是一次性跳到最外层的循环处。下面通过代码来具体说明:

# break和continue的生效范围是一样的
# 这里偷老师上课的代码举例,我一下想不出这么多循环的例子
# 这是一个登陆程序,这里用的事全局标志位
is_flag = True
while is_flag:
# 这里输入用户名和密码
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and password == '123':
# 登陆成功后选择需要执行的指令,如果是‘q’就停止循环
while is_flag:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
is_flag = False
print('正在执行您的指令:%s' % cmd)
else:
print('用户名或密码错误') # 这里用的是break方法
is_flag = True
while True:
# 这里输入用户名和密码
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and password == '123':
# 登陆成功后选择需要执行的指令,如果是‘q’就停止循环
while True:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
break
print('正在执行您的指令:%s' % cmd)
break
else:
print('用户名或密码错误')

这里我们可以明显看到运行的时候,使用全局标志位只需要更改一下变量就能停止循环,但是使用break方法的时候需要连续的插入break,如果循环太多,很容易把人绕迷糊。

四、range方法

1、介绍

range方法起一个把输入的范围内,所有的整数都放到一个列表中的作用。但是range方法顾头不顾尾,最后的结尾不取。

ps:通过功能,我们可以知道通常range都是和for循环配合使用的。

2、不同版本中range方法的区别:

python2:

分为range和xrange两种

其中range就是把数据直接生成一个列表并把所有的数据值放进列表中。

而xrange就是在内存中生成一个类似工厂的东西,平时不会占用很大空间,当代码运行的时候需要用到xrange生成的列表的时候,才会开始工作,相对range节省内存空间。

python3:

python3中只有range这一种表达方式,但是作用是和python2中的xrange一样的。

通常来说有三种表达方式:

1、range(数值)

for i in range(100):
print(i)
# 这里就是打印从0开始,到99为止的100个数字

2、range(起始数值,结束数值)

for i in range(10,100):
print(i)
# 这里就是打印从10开始,到99为止的数字

3、range(起始数值,结束数值,间隔数值)

for i in range(10,100,2):
print(i)
# 这里就是打印从10开始,到99为止的数字,但是每隔两个数字打印一次。

3、实际应用:

主要应用在爬虫领域中,代码的世界中都是比较有规律可循的,所以range方法会大大方便我们查找。

举例:

在一些普通的网页中,我们可以发现网址是有规律的,我们这样通过这种方式,在数据值很多的时候获得所有的网址。

# 这里是博客园的不同页面的网址,我们可以找到规律就是自增1,而第一个没有显示p1。
但是我们可以大胆的去试试在网址后加上p1会不会跳到第一页去,毕竟代码都是有很强的逻辑性的,结果确实是可行的。
https://www.cnblogs.com/
https://www.cnblogs.com/#p2
https://www.cnblogs.com/#p3
https://www.cnblogs.com/#p4

但是也不是所有的网页都可以用这种方法获取,有一些网页会使用js文件产生动态编码的表达方式。

五、作业

1.计算1-100所有的数之和

# 1.计算1-100所有的数之和
count_number = 0
for i in range(1,101): # 从1开始计数到100为止
count_number += i
# 统计综合
print(count_number)

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]

count1 = 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]
# 定义l1
for i in l1:
# 遍历l1中的所有数据值
if i == 2:
# 遍历的结果是否为2,如果是2就计数加一
count1 += 1
print(count1)

3.编写代码自动生成所有页网址(注意总共多少页)

https://movie.douban.com/top250

# 我们可以先点进网页观察,发现总共是有10页,然后根据其他页面的网址发现规律:两个网址之前start值差25

# numb = 0
# for i in range(10):
# # 根据观察规律我们只需要改动start的值,规律是每页增加25
# print('https://movie.douban.com/top250?start=%s&filter=' % numb)
# numb += 25

4.编写代码打印出下列图形(ps:for循环嵌套)

'''
这是需要打印的形状
*****
*****
*****
*****
'''
#以下三种方法其实意思差不多的
# 方法一:输出四次,一次输出一行
for i in range(4):
print('*****') # 方法二:输出两次,一次输出两行
for i in range(2):
print('*****\n*****') # 方法三:一次性全部输出
for i in range(1):
print('*****\n*****\n*****\n*****') # 方法四:也是一次性输出
pic = '''
*****
*****
*****
*****
'''
print(pic)

9月28日——while循环知识补充、for循环、break及continue生效范围和range方法的介绍的更多相关文章

  1. 10月28日PHP基础知识测试题

    本试题共40道选择题,10道判断题,考试时间1个半小时 一:选择题(单项选择,每题2分): 1. LAMP具体结构不包含下面哪种(A) A:Windows系统 B:Apache服务器 C:MySQL数 ...

  2. 5月 28日css前端知识

    a:link {color : #FF0000}    #未访问连接时设置颜色 a:visited {color:  #FF0000}   #访问过得连接设置颜色 a:hover {color: #F ...

  3. 2016年12月28日 星期三 --出埃及记 Exodus 21:23

    2016年12月28日 星期三 --出埃及记 Exodus 21:23 But if there is serious injury, you are to take life for life,若有 ...

  4. 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00

    武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...

  5. 2015年12月28日 Java基础系列(六)流

    2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流2015年12月28日 Java基础系列(六)流

  6. 2016年11月28日 星期一 --出埃及记 Exodus 20:19

    2016年11月28日 星期一 --出埃及记 Exodus 20:19 and said to Moses, "Speak to us yourself and we will listen ...

  7. 2016年10月28日 星期五 --出埃及记 Exodus 19:13

    2016年10月28日 星期五 --出埃及记 Exodus 19:13 He shall surely be stoned or shot with arrows; not a hand is to ...

  8. 2016年6月28日 星期二 --出埃及记 Exodus 14:25

    2016年6月28日 星期二 --出埃及记 Exodus 14:25 He made the wheels of their chariots come off so that they had di ...

  9. 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日

    https://mp.weixin.qq.com/s/z5qm-2bHk_BCJAwaodrMIg 跨界!Omi 发布多端统一框架 Omip 打通小程序与 Web 腾讯开源 2月28日

  10. 【NEWS】 ADempiere发布ADempiere 3.8.0路线图【2013年7月28日】

    发布源:http://osssme.org/cms/?q=node/17 本以为ADempiere”已死“,但是看到ADempiere的WIKI上大概在从5月28日开始添加WIKI以来,经过多次更新后 ...

随机推荐

  1. mysql网上知识

    MySQL学习笔记 登录和退出MySQL服务器 # 登录MySQL $ mysql -u root -p12345612 # 退出MySQL数据库服务器 exit; 基本语法 -- 显示所有数据库 s ...

  2. Pytest学习

    pytest简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高. 使用介绍 编写规则 测试函数以t ...

  3. Excel表格复制填写

    =if(A1<>"",A1,"") #A1可以为任意表格单元

  4. 垃圾回收、python中的流程控制

    垃圾回收机制 1.概念 垃圾回收机制(GC):是Python解释器自带一种机制,专门用来回收不可用的变量值所占用的内存空间 2.原理 Python的垃圾回收机制(GC)主要使用引用计数(referen ...

  5. Python3 Scrapy 框架学习

    1.安装scrapy 框架 windows 打开cmd输入 pip install Scrapy 2.新建一个项目: 比如这里我新建的项目名为first scrapy startproject fir ...

  6. Vue3“直接”修改props

    父组件 import { reactive } from 'vue'; //对话框数据 const show = reactive({ isshow: false, }); //打开对话框 const ...

  7. Spring MVC文件请求处理详解:MultipartResolver

    org.springframework.web.multipart.MultipartResolver是Spring-Web针对RFC1867实现的多文件上传解决策略. 1 使用场景 前端上传文件时, ...

  8. 《不一般的 DFT》阅读随笔

    感觉上前置知识是毛啸 16 年的论文? 我手头也有,到时候发现有 at 到的地方就插一嘴说一句 srds 先这篇是因为有纸质版的这篇 感觉上大篇幅在讲复杂度模数大小相关的做法. 1 引言 我这写个啥? ...

  9. “XZ”格式文件解压

    1.下载xz 官网:https://tukaani.org/xz/ 例:wget https://nchc.dl.sourceforge.net/project/lzmautils/xz-5.2.6. ...

  10. OpenLooKeng

    一.登录注册 网址为:https://tryme.openlookeng.io/,进入该网址后可以看到以下界面: 可以选择左边的GitHub或者右边的Gitee进行登录,如果没有账号需要注册一个账号进 ...