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.语法结构

image
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 range5):
    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所有的数之和
image
image

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]
image
image
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循环嵌套)

image

image

posted @   空白o  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示