python学习笔记
昨日内容回顾
- 逻辑运算符补充知识
连接多个条件之后的结果具体是布尔值还是没有转换之前的数据值:
1.多个条件如果都是具体的数据值,那么结果肯定是某个数据值
2.多个条件如果都是需要转换的表达式,那么结果肯定是布尔值
3.多个条件既有数据值又有表达式,则需要区别对待(and or) - 循环结构之while基本语法
while 条件:
条件成立执行的循环体代码
- while+break
while 条件:
条件成立执行的循环体代码
break # 结束break所在的那一层循环
- while+continue
while 条件:
条件成立执行的循环体代码
contiune # 结束本次循环直接开始下一次循环
- while+else
while 条件:
条件成立执行的循环体代码
else:
循环体没有被强制结束的情况下,走完循环体代码就会执行该子代码
- while循环嵌套
能够掌握两层嵌套足矣
while 条件:
条件成立执行的循环体代码
while 条件:
条件成立执行的循环代码
- 死循环与全局标志位
1.死循环
循环体代码不能是连续的计算任务(没有停顿)
2.全局标志位
是为了节省break的编写
今日内容概要
- 作业讲解
- 循环结构之for循环
今日内容详细
作业讲解
1.准确说出下列判断的结果(不要执行代码)
v1 = 1 or 3
v2 = 1 and 3
v3 = 0 and 2 and 1
v4 = 0 and 2 or 1
v5 = 0 and 2 or 1 or 4
v6 = o or False and 1
输出结果:
1
3
0
1
1
False
混合使用的优先级: () > not > and > or
先理清思路 写注释
1.先写主体功能
2.再添加额外的附加功能
2.编写一个用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
# 1.先明确主体功能>>>:登录
# 2.先按照登录的的逻辑编写
# 3.再去添加附加功能(尝试三次 先尝试无穷次再想怎么变成三次)
# 4.最后补一个简单的强制结束
count = 1
while count < 4:
username = inout('username>>>:')
password = input('password>>>:') # 获取用户的用户名和密码
if username == 'jason' and password == '123': # 判断用户名和密码是否正确
print('登录成功')
break
else:
print('登录失败')
count += 1
3.编写一个用户登录程序
用户如果登录失败 可以无限制尝试
用户如果登录成功 则进入内层循环 获取用户输入的指令 并打印该指令
eg: 用户输入cmd指令 则程序打印正在执行您的指令:cmd'
给用户提供一个退出命令 用户一旦输入则退出整个程序
eg: 用户输入q指令 则程序先打印该指令再结束
while Ture:
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and possword == '123':
print('登陆成功')
while True:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
print('欢迎下次光临')
break
print('正在执行您的指令:%s'%cmd)
break
else:
print('登录失败')
4.编写猜年龄的游戏(拔高练习 尝试编写)
用户有三次猜测的机会 如果用完则提示用户是否继续尝试
用户输入y则继续给三次机会 如果用户输入q则直接结束程序
# 1.先定义一个正确的年龄
real_age = 24
# 4.定义一个计数器
count = 1
# 3.先加个循环 循环起来
while True:
# 5.判断当前是第几次猜
if count == 4:
choice = input('已经错三次了 要不要再试试(y/n)>>>:')
if choice == 'y':
count = 1
else:
choice == 'q'
print('结束程序')
break
# 2.获取用户猜测的年龄
guess_age = input('guess_age>>>:')
guess_age = int(guess_age)
if guess_age > real_age:
print('猜错了 我没这么大')
count += 1
elif guess_age < real_age:
print('猜错了 我没这么小')
count += 1
else:
print('猜对了')
break
循环结构之for循环
1.前戏
l1 = ['jason', 'kevin', 'tony', 'oscar']
# 循环打印出列表中每一个数据值
# 列表取值:索引
# while循环打印
num = 0
while num < 4:
print(l1[num]) # 每次循环的时候索引应该自增1
num += 1
# for循环
for i in l1:
print(i)
for循环能够做到的事情while循环都可以做到
但是for循环的语法结构更加简单,尤其擅长循环取值
2.语法结构
for 变量名 in 可迭代对象: 字符串,列表,字典,元组
for循环的循环体代码
针对变量名的命名:
1.如果带取值的数据由明确的指向,最好见名知意
eg:for name in 学习姓名名单
for addr in 地址信息
2.如果没有明确的指向,可以使用常见的字母
eg:i,j,k,itm,v···
3.常见取值操作
1.for循环列表每次默认取到一个完整的数据值
l1 = ['jason', 'kevin', 'tony', 'oscar']
for i in l1:
print(i)
2.for循环字典默认只能取到字典的key值
user_dict = {'username': 'jason', 'pwd': 123, 'age': 18 }
for i in user_dict:
print(i)
3.for循环字符串默认每次取单个字符
desc = 'hello baby'
for i in desc:
print(i)
4.for循环元组数据与列表一致默认都是单个数据值
t = (11, 22, 33)
for i in t:
print(i)
for重要知识
range方法
range可以看成是一个能够帮助我们快速产生一个包含多个数据值的列表
for i in range(5):
print(i)
# 1.如果括号内只有一个数字,那么就是从0开始到数字减一结束(顾头不顾尾 左包含右不包含)
for i in range(3, 10):
print(i)
# 2.括号内有两个数字,第一个是起始位置(包含),第二个是终止位置(不含)
for i in range(0, 100, 25):
print(i)
# 3.括号内有三个数字,最后一个是数据的间隔数(等差数列)
在python2中有两个
range()
直接产生一个列表 当数据量很大的时候可能会造成内存溢出(爆满)
xrange()
其实就是python3里面的range方法
在python3中只有一个
range()
类似于是一个工厂 什么时候要什么时候创建给你 节省内存
range方法实操
网络爬虫:python代码模拟网络请求获取数据,很多网址的数据都不止一页,所以有时候需要通过代码模拟
编写代码自动产生博客园前一百的网址
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/#%s'
for i in range(1, 101):
print(base_url % i)
for+break
# 1-10 7结束
for i in range(1,11):
if i == 7:
break
print(i)
"""
break也能够结束所在的那一层for循环
"""
for+continue
# 1-10 7跳过
for i in range(1, 11):
if i == 7:
continue
print(i)
"""
continue也能够结束所在的那一次for循环 直接开始下一次
"""
for+else
for i in range(10):
print(i)
if i == 5:
break
else:
print('嘿嘿嘿 猜猜我什么时候执行')
"""
else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码
"""
作业
1.计算1-100所有的数之和
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]
3.编写代码自动生成所有页网址
https://movie.douban.com/top250
base_url = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 251, 25 ):
print(base_url % i)
https://movie.douban.com/top250?start=0&filter=
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=100&filter=
https://movie.douban.com/top250?start=125&filter=
https://movie.douban.com/top250?start=150&filter=
https://movie.douban.com/top250?start=175&filter=
https://movie.douban.com/top250?start=200&filter=
https://movie.douban.com/top250?start=225&filter=
https://movie.douban.com/top250?start=250&filter=
4.编写代码打印出下列图形(ps:for循环嵌套)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了