逻辑运算符补充和循环结构
逻辑运算符补充和循环结构
逻辑运算符补充
and 是
or 与
not 非
and:
多个运算表达式用逻辑运算符and连接时,结果肯定是布尔值
既有多个运算表达式又有多个数据值时,条件成立则最后一个对应的是布尔值结果是布尔值不然就是数据值,条件不成立时,看具体情况
多个数值用逻辑运算符连接时,若有0则输出0,若没有0输出最后一个数值
or:
多个运算表达式用逻辑运算符or连接时,结果肯定是布尔值
既有多个运算表达式又有多个数据值时,条件成立则输出条件成立对应的布尔值或数值,条件不成立则输出最后一个对应的布尔值或数值
多个数值用逻辑运算符连接时,输出的值一定是数值
循环结构之while基本语法
while 条件:
条件成立执行的子代码
当while后面的条件成立时,执行while的子代码,然后回到while处再进行判断条件是否成立,若成立继续执行子代码,以此重复。
while + break
while 条件:
条件成立执行的子代码
break
break强制结束循环,强制结束的是当前本层循环,可以从下往上找父级最近的while循环,然后执行与在while下面同级的代码块。
while + continue
while 条件:
条件成立执行的子代码
continue
continue是结束“本次”循环,结束本次循环后回到while条件处继续判断while处的条件是否成立然后决定是否执行while条件成立的子代码。
while + else
while 条件:
条件成立执行的子代码
else:
条件不成立执行的子代码
else是当while后面的条件不成立时执行执行的子代码。else与while是同级关系,while条件不成立顺序执行else语句。
while嵌套
while 条件1:
条件1成立执行的子代码
while 条件2:
条件2执行的子代码
while嵌套是当外层while条件1成立后执行的子代码,继后while条件2成立后执行子代码,当while条件2不成立后再返回while条件判断条件是否成立,依次重复。
死循环和全局标志位
1.死循环
当while条件一直成立执行的子代码需要一直计算时,那么就是进入了死循环。不能写这种循环,会占用CPU内存导致电脑卡顿,严重导致电脑坏了。
2.全局标志位
相当于立一面旗帜,有这个旗帜就是提醒你需要强制结束循环,使用全局标志位是为了节省break的编写。很少用到全局标志位。
循环结构之for循环
for 变量名 in 可迭代对象:
for循环的循环体代码
变量名是自己定义的,没有明确的定向,可使用常见的字母:i,j,k,v,item
可迭代对象是指可以重复反馈过程的活动的对象,目的是为了逼近所需的结果。可迭代对象一般是列表、字典、集合、元组、字符串等。
for循环的功能while循环都有但是for循环语法结构更加简单。

1.for循环之列表
li = ['橘子', '苹果', '提子']
for i in li:
print(i)
# 橘子
# 苹果
# 提子
若循环获取列表中的值,则按照索引,for循环会自动按li[0]~li[3]获取值,不需要设置,当没有检测到最后一个索引自动结束。全自动。
2.for循环之字典
li = {'姓名': 'orange', '年龄': 18, '性别': 'female'}
for i in li:
print(i)
# 姓名
# 年龄
# 性别
若循环获取字典中的值,获取的是K值,这是相当于字典的隐私性。
3.for循环之字符串
li = '以后的你会感谢现在努力的你'
for i in li:
print(i)
# 以
# 后
# 的
...
若循环获取字符串中的值,获取的是单个字节。
4.for循环之元组
li = (111, 222, 333)
for i in li:
print(i)
# 111
# 222
# 333
若循环获取元组中的值,和列表的取值方式是一样的。
5.for循环之集合
li = {'橘子', 22, 'sea'}
for i in li:
print(i)
# sea
# 橘子
# 22
若循环获取集合中的值,是无序获取其中的值。但是循环的理论是一样的。
for + break
for 变量名 in 可迭代对象:
for循环的循环体代码
break
break强制结束的是当前本层for循环,与while + break理论相似
li = '以后的你会感谢现在努力的自己'
for i in li: # 第一个实例
if i == '你':
break # 当if后面的条件成立强制结束当前本层循环体
print('当前字为 :', i)
# 当前字为 : 以
# 当前字为 : 后
# 当前字为 : 的
for + continue
for 变量名 in 可迭代对象:
for循环的循环体代码
continue
continue结束的是当前本次循环,然后回到for循环再次判断条件是否成立,相当于跳过循环体条件成立的事件。用法和while + continue类似。
li = '以后的你会感谢现在努力的自己'
for i in li: # 循环列表
if i == '你':
continue
print('当前字为 :', i)
# 当前字为 : 以
# 当前字为 : 后
# 当前字为 : 的
# 当前字为 : 会
# 当前字为 : 感
# 当前字为 : 谢
...
for + else
for 变量名 in 可迭代对象:
for循环的循环体代码
else:
条件不成立执行的子代码
else是当for后面的条件不成立时执行的子代码。else与for是同级关系,for条件不成立顺序执行else语句。
li = [1, 2, 3, 4, 5, 6]
for i in li:
print(i)
if i == 3:
break
else:
print('不会结束!') # 该语句不会执行
# 1
# 2
# 3
for的重要知识之range
1.range方法
range可以看成一个快速生成存储数据值的列表
for i in range(6):
print(i)
'''若括号里只有一个数值那么就是输出打印的是从0开始的到数值减一的数值(左包含右不包含)'''
for i in range(2, 20):
print(i)
# 2
# 3
# 4
# 5
...
# 19
'''若括号里只有两个数值那么打印输出的是从括号第一个数开始到最后一个数减一的数值'''
for i in range(2, 20, 5):
print(i)
# 2
# 7
# 12
# 17
'''若括号里只有三个数值那么一个数字代表的是首项,中间的数字代表尾项,第三个数字代表的是公差,打印的结果看具体数字'''
"""
python2:
range()
直接打印输出的是列表,但是当数据值很大时会造成内存溢出就是所谓的爆满
xrange()
与python3中的range方法一致
python3:
range()
类似于自助机买水,什么时候付钱时候时候给你水,为了节省内存
"""
2.range方法实操
应用网络爬虫,python代码模拟网络请求获取数据,因为网址的数据页码不止一页,所以需要通过代码模拟。
博客园多页规律
https://www.cnblogs.com/ 第一页
https://www.cnblogs.com/#p2 第二页
https://www.cnblogs.com/#p3 第三页
https://www.cnblogs.com/#p4 第四页
...
https://www.cnblogs.com/#p1 第一页
# 提前定义好一个模板
base_url = 'https://www.cnblogs.com/#p%s'
for i in range(1, 10):
print(base_url % i)
# https://www.cnblogs.com/#p1
# https://www.cnblogs.com/#p2
# https://www.cnblogs.com/#p3
# https://www.cnblogs.com/#p4
# https://www.cnblogs.com/#p5
# https://www.cnblogs.com/#p6
# https://www.cnblogs.com/#p7
# https://www.cnblogs.com/#p8
# https://www.cnblogs.com/#p9
作业
1.计算1-100所有的数之和
# 1.计算1-100所有的数之和
# 1+2+...+100,相当于0+1+2+...+100,每个数之间隔了1
# 定义一个变量名值为0
# 变量自增1
# 每当数值自增1加0
# 当自增到100时打印输出
a = 0
for i in range(1, 101): # 变量i从1循环到100
a += i # 相当于a = a + i,每当i自增1与相加
if i == 100: # 如果i自增到100打印输出
print(a)
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]
# 循环查询列表中的每个数值
# 当值等于2时,计数器自增1
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]
count = 0
for i in l1:
if i == 2: # 如果i等于2计数器自增1
count += 1
print(count)
3.编写代码自动生成所有页网址
https://movie.douban.com/top250
# https://movie.douban.com/top250
# https://movie.douban.com/top250?start=25&filter=
# https://movie.douban.com/top250?start=50&filter=
# https://movie.douban.com/top250?start=75&filter=
# ...
# https://movie.douban.com/top250?start=0&filter=
# 0 25 50 70 ...
# 第一页网址与第二页网址中间差了25个电影,根据range(x, y, z)x为首项,y为尾项,z为差值,相当于等差数列
# 打印输出 0 25 50 70 ... 250即可
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 251, 25):
print(base_url % i)
4.编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
# 先打印5个*,重复4次
for v in range(1, 5):
for i in range(1, 6):
if i == 5:
print(i * '*')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)