• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
草卆鱼
博客园    首页    新随笔    联系   管理    订阅  订阅

8/13

今日考题
1.诠释逻辑运算符,成员运算符,身份运算符各自详细

逻辑运算符
	与 and 链接的条件要同时满足
    或 or 链接的条件只要满足一个
    非 not 取条件的反   我超勇的啦 --not->  我超逊的啦

成员运算符  in
	判断个体是否在某群体内
    list = [1,2,3,4]
    sth = 1
    print(sth in list)  # True

身份运算符
	No1 = 123456
    No2 = 123456
    No1 == No2  # True  两个等号代表数学里的等号
    No1 is No2  # False is来看两者的内存地址是否一样,有些情况经过优化也可能一样
    

2.程序执行流程有几种,尝试书写各自语法结构,注意事项

顺序结构
	没啥说的  最基本的部分只要从上到下顺序执行就是
分支结构
	顺序结构中添加了条件从而让下一步结果出现分叉
循环结构
	被某条件限制要重复之前的顺序  循环往复
graph LR A[分支结构]-->B[目前是顺序结构] B --> C[条件1] C -->D[结果1] C --> E[条件2] E -->F[结果2] E -->G[结果3]
graph LR A-->B B --> C[由于某些条件返回A] C -->A C -->D{这就是循环结构}

复习巩固

  • 逻辑运算符

    数学运算和逻辑运算的区别?
    	数学运算就是数字之间的数学计算
        逻辑运算是对一个事物的判断
          eg: 今天练不练腿  出门撑不撑伞
            
    与 and
    	链接多个条件必须全部满足
    或 or
    	链接多个条件只要有一个满足
    非 not
    	取反操作
    """
    补充:
    在python中所有数据类型内部都可以转换成布尔值
    	布尔值为False的
    		0  None  空字符串  空列表  空字典
    		其他均为True
    """
    
  • 成员运算符

    判断个体在不在全体内
        in
        not in
    
  • 身份运算

    id()  #返回一串数字  可以看成是内存地址
    
    is  # 判断两个变量指向的值内存地址是否一致
    ==  # 判断两个变量指向的值是否相等
    """
    值相等内存地址可能不相等
    内存地址相等值一定相等
    """
    ps:python内部有内存优化机制
    
  • 流程运算

    控制事物的执行流程
    	顺序结构
        分支结构
        循环结构
    # 前面的问答里有示意图
    
  • if 判断

    """
    python中通过代码的缩进表示代码之间的从属关系
    推荐使用四个空格
    并不是所有代码都可以拥有子代码
    同属于一个关键字的多行子代码要保持相同缩进量
    
    ps:如果代码末尾出现冒号  那下一行代码必定缩进
    """
    1. if...
    	if条件:
        	条件成立执行子代码
    2. if...else
    	if条件:
        	条件成立执行子代码
        else:
        	条件不成立执行子代码
    3. if...elif...elif...else
    	if 条件1:
        	条件1成立执行子代码
        elif 条件2:
        	条件1不成立条件2成立执行子代码
        ...
        else:
        	条件不成立执行子代码
    # if elif else 连用只能执行一个
    
  • while 循环

    while 条件 :
    	循环体代码1
         循环体代码2
         循环体代码3
        
    每次执行完循环体代码后会再判断条件是否成立
    	成立则继续循环执行
        不成立则退出循环
        
     while + break
    	结束本层循环  本层即上一辈的while
    while + continue
    	结束本次循环
    
  • 作业复盘

    """
    前期涉及到编程相关的问题不要着急写代码
    可以先写中文思路(注释)
    再不行画个流程图
    """
    1.利用if判断实现用户的登录功能
        	获取用户的用户名和密码 然后判断是否跟后台设定的用户名密码相同
    # 先获取用户名和密码数据
    user_name = input('您的用户名:')
    passport = input('您的密码:')
    if user_name == 'leo' and passport == '112233':
        print('welcome back leo')   # 如果两个都和预设的对上了 输出这个
    else:
        print('passport or user_name error')  # 其他情况就是  用户名或者密码有问题
        
    2.利用if判断编写身份识别系统
        	获取用户的用户名 根据用户名的不同打印不同的身份
            	eg:
                    jason	管理员
                    tony	经理
                    kevin	主管
                    tom、jerry	专员
                    其他人员	普通员工
        	拔高:循环起来并添加自动结束命令
    while True:
        name = input('请输入姓名') # 获取用户名
        if name == 'jason': # 判断用户名对应的关系
            print('管理员')
        elif name == 'tony':
            print('经理')
        elif name == 'kevin':
            print('主管')
        elif name == 'tom' or name == 'jerry':
            print('专员')
        elif name == 'end':  # 额外加一个用于结束的判断
            break
        else:
            print('普通员工')
                
    利用while循环编写猜年龄的游戏
        	只有猜对了才结束程序 否则一直循环猜
            拔高:
                三次机会   再拔高  三次之后问是否继续
    
    hp = 3  # 设置一个血量值来限定猜的次数  由于第一遍走是2.第二遍是1
    while True:  # 循环别管先给个True  别再while里面做限定条件不然之后不好改
        if hp > 0:  # 判断次数要放最前面来看有没有猜的资格  
            age = input('请猜年龄')  # 获取猜的数据
            age = int(age)  # 把input拿到的字符串转成整型  方便比大小
            if age > 22:  # 判断大小
                print('猜大了')
                hp -= 1  # 猜错扣一次血
            elif age < 22: # 判断大小
                print('猜小了')
                hp -= 1  # 猜错扣一次血
            else:  # 除了猜大或者猜小 就只有完全猜对了
                print('恭喜你回答正确')
                break
        else:  # 血没了的情况
            print('您已经尝试三次是否还要继续')
            choose = input('继续Y 退出Q') 
            if choose == 'Y':  # 用==看输入内容是否和我们做判定的需要的一支
                hp += 3  # 要继续加3点血回到本层循环
            if choose == 'Q':
                break
                
                
    #  刚开始接触编程肯定不习惯(先抄代码,多敲  之后再模仿写  加入自己的想法)
    

内容概要

  • 循环结构之for 循环(简单)
  • 数据类型的内置方法(重要)
  • 字符编码
  • 文件操作(代码操作文件读写)

详细讲解

几乎全是记忆内容图片比较少比较无趣但是务必多级多练百炼成钢

循环结构之for 循环(简单)

for循环能实现的操作while都能实现
但是for循环的语法结构要简单很多
cp_list = ['loe', 'ace', 'love', 'peace', 'sex']
num = 0  # 用while做循环取值
while num < 5:
    print('>>>', cp_list[num])
    num += 1
# 可以看出while太复杂了,而且还要知道列表里元素数量很不方便
# 这里就要介绍循环取值的王for循环
for word in cp_list:
    print('>>>', word)
 # 短短两行就解决了非常方便

res = 'hello world!'
# 当值没有明确的类别时  变量名会取i、k、j、item等
for i in res:
    print(i)  # 会一个个字符打出来
    
my_dict = {'name': 'leo', 'age': '18', 'height': "160", 'weight': '150'}
for k in my_dict: # 取字典里的值只能取到key  对应的value无法直接获取
    print(k)  # name age height weight
"""
for循环特别擅长应用再循环取值方面
for 变量名 in 可迭代对象(字符串 列表 字典 元组):
	for循环体代码
	
for循环不用添加结束命令  取值结束会自动结束
"""

"""
容器类型
	内部能够存放多个元素的数据类型都可以称之为容器类型
		列表 字典 元组
for循环针对容器类都可以循环取值
在此基础上对字符串也可以循环取值
"""

range的用法

配合for很好用,因为range的本质是个迭代器
for i in range(0, 10):
    print(i)  # 后面的括号范围有个要点‘顾头不顾尾’ 所以结果是0到9

for i in range(5): #一个参数默认从0开始
    
#两个参数的前面讲过了注意重点  顾头不顾尾

for i in range(0,250,25) #  三个参数最后一个是间隔 相当于产生一个等差数列
	print(i)  #  0 25 50 ... 225

数据类型内置方法

补充

如何查看数据类型拥有的方法
	用句点符
    数据类型.
在pycharm里面会有提示

整型 int

# 整型 int
int()
	1.数据类型的转换
    2.实现进制之间的转换

n = '11'
print(int(n))  # 正确
n1 = '11.11'
print(int(n1))  # 报错 小数点整型无法转
n2 = 'jason'
print(int(n2))  # 报错 数字以外根本无法转换

# 将十进制转化成二进制再复制结果转回来
print(bin(50))  # 0b110010
print(int(0b110010))  # 50
# 将十进制转化成八进制再复制结果转回来
print(oct(55))  # 0o67
print(int(0o67))  # 55
# 将十进制转化成十六进制再复制结果转回来
print(hex(43))  # 0x2b
print(int(0x2b))  # 43
"""
以后如果看到数字前面
	ob开头就是二进制数
	0o开头则是八进制数
	0x开头则是十六进制数
"""

# 其他机制转十进制
print(int('0b1100100', 2))  # 100
print(int('0o144', 8))  # 100
print(int('0x64', 16))  # 100

浮点型 float

# 浮点型 float
n1 = '11'
print(float(n1))  # 11.0
n2 = '11.11'
print(float(n2))  # 11.11
n3 = 'leo'
print(float(n3))  # 报错

字符串 str

# 字符串 str
# 1.统计字符个数
res = 'ACE with lover'
print(len(res))  # 14
# 2.索引取值
print(res[0])  # A
# 3.切片取值
print(res[3:8])  # with  和之前一样遵循顾头不顾尾的原则
# 4.步长  在前面的基础上再加一个参数表示间隔
print(res[0:12:3])  # A tl 注意中间的空格,也算作字符的
# 5. 移除字符串首位指定的字符
user_name = '&&&Y&ACE&Y&&'
print(user_name.strip('&'))  # Y&ACE&Y  注意strip只能添加一个参数
print(user_name.lstrip('&'))  # Y&ACE&Y&&  清楚左边固定元素
print(user_name.rstrip('&'))  # &&&Y&ACE&Y  清除右边固定元素
# 一直清除到有不是预设的元素为止 比如前面的例子到Y就会停
# 这个功能最大的作用就是清除字符串首位的空格
name = '    ACE         '
print(len(name))  # 16 空格算字符
print(len(name.strip()))  # 3 去掉空格
vip_user = input('vip>>>:').strip()
if vip_user == 'ACE':
    print('welcome home')
else:
    print('fuck off')  # 这个登录界面中无论前后输多少空格都能成功识别出来
# 6.按照指定的字符切割数据
data = 'leo|18|16.5|ace|16|black'
print(data.split('|'))  # ['leo', '18', '16.5', 'ace', '16', 'black']  # split就是分裂的意思
print(data.split('|', maxsplit=1))  # ['leo', '18|16.5|ace|16|black']  # 最多分割一个
print(data.rsplit('|', maxsplit=1))  # ['leo|18|16.5|ace|16', 'black']  # 加个r就是右边开始
# 7.大小写转换
check_code = '3A8x'
print(check_code.upper())  # 3A8X 把字母全转大写
print(check_code.lower())  # 3a8x 把字母全转小写
"""图片验证码之所以不需要校验大小写 内部就是统一转大小写再比对"""
print(check_code.isupper())  # 判断字符串是否是纯大写 False
print(check_code.islower())  # 判断字符串是否是纯小写 False
# 8.判断字符串是否是纯数字
print('1231654'.isdigit())  # True
print('ga6rg55'.isdigit())  # False
# 9.统计字符出现次数
article = 'l wana be your slaver slaver slaver slaver slaver slaver forever'
print(article.count('slaver'))  # 6
# 10.替换指定字符
print(article.replace('slaver', 'lover'))  # l wana be your lover lover lover lover lover lover forever
print(article.replace('slaver', 'lover', 3))  # l wana be your lover lover lover slaver slaver slaver forever
# 加的参数意味着换几个
# 11.按照指定的字符拼接字符串
l = ['leo', 'ace', 'love', 'sex', 'forever']
print('/'.join(l))  # leo/ace/love/sex/forever
hate = 'hot and wet'
like = 'fall'
prefer = 'muscle'
print(hate+' '+like+'|'+prefer)  # hot and wet fall|muscle  空格也能加记得在引号里打上

列表 list

# print(list())里面只能转换支持for循环的数据类型
# 1.统计元素个数
l1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(len(l1))  # 9
# 2.索引取值
print(l1[0])  # 1
# 3.切片操作
print(l1[0:4])  # [1, 2, 3, 4]
# 4.增加步长参数
print(l1[0:4:2])  # [1, 3]
# 5.添加元素
# 5.1尾部添加元素
l1.append('leo')
print(l1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 'leo']
# 无论添加的元素是什么都只会被当成列表的一个元素
l1.append([1, 2, 3, 4])
print(l1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 'leo', [1, 2, 3, 4]]
# 5.2指定位置插入元素
l1.insert(0, 'leo')  # 前一个是位置后一个是元素
l1.insert(2, [11, 22])  # 无论加什么元素都只会当成列表里的一个元素
print(l1)  # ['leo', 1, [11, 22], 2, 3, 4, 5, 6, 7, 8, 9, 'leo', [1, 2, 3, 4]]
# 5.3扩展列表
l1.extend(['a', 'b', 'c'])  # 把每个元素一一添加进列表
print(l1)  # ['leo', 1, [11, 22], 2, 3, 4, 5, 6, 7, 8, 9, 'leo', [1, 2, 3, 4], 'a', 'b', 'c']
"""
如果不让你使用extend也完成扩展列表的操作  如何实现?
for i in [111,222,333,444]:
    l1.append(i)
"""
# 6.删除元素
# 6.1通用删除操作
del l1[0]  # 删除第一个元素
print(l1)
# 6.2弹出元素
bob = l1.pop(1)  # 不同于del的是pop之后那个元素还在
print(l1, bob)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 'leo', [1, 2, 3, 4], 'a', 'b', 'c'] [11, 22]
# 6.3删除元素
word = l1.remove(3)  # remove和delet一样是不会保留元素的
print(l1, word)  # [1, 2, 4, 5, 6, 7, 8, 9, 'leo', [1, 2, 3, 4], 'a', 'b', 'c'] None
# 7.统计元素出现的次数
l2 = [11, 222, 33, 22, 33, 11, 11, 11, 22, 22, 33, 44, 44]
print(l2.count(11))  # 4
# 8.排序
l3 = [55, 44, 22, 33, 11, 99, 77, 88]
l3.sort()  # 默认是升序  sort排序
print(l3)  # [11, 22, 33, 44, 55, 77, 88, 99]
l3.sort(reverse=True)  # 倒序 reverse颠倒
print(l3)  # [99, 88, 77, 55, 44, 33, 22, 11]

字典dict

# 字典dict
字典内元素也是无序的
user_dict = {'username': 'leo', 'pwd': 123, 'hobby': 'bodybuilding'}
# 1.统计长度(键值对的个数)
print(len(user_dict))  # 3
# 2.按键取值
print(user_dict['username'])  # leo
print(user_dict['xxx'])  # 键不存在会直接报错
print(user_dict.get('username'))  # leo
print(user_dict.get('xxx'))  # None  键不存在不会报错返回None
# 3.设置值(重点)
user_dict['username'] = 'ACE'
'''键存在则修改'''
print(user_dict)  # {'username': 'ACE', 'pwd': 123, 'hobby': 'bodybuilding'}
user_dict['age'] = 18
'''键不存在则新建'''
print(user_dict)  # {'username': 'leo', 'pwd': 123, 'hobby': 'bodybuilding', 'age': 18}
# 4.删除值(键值对是一个整体会一起删除)
res = user_dict.pop('username')  # 和前面列表一样用pop
print(user_dict, res)  # {'pwd': 123, 'hobby': 'bodybuilding', 'age': 18} leo
#5.三个小方法
print(user_dict.keys())  # 取键值对K:V的K  dict_keys(['pwd', 'hobby', 'age'])
print(user_dict.values())   # 取键值对K:V的V  dict_values([123, 'bodybuilding', 18])
print(user_dict.items())  # 取一整条键值对  dict_items([('pwd', 123), ('hobby', 'bodybuilding'), ('age', 18)])

集合(了解)

集合内元素是无序的
1.去重
	集合内不允许出现重复的元素,会自动去重
2.关系运算
	交叉并集(交集)
    	eg: 共同好友
         
f1 = {'jason', 'tony', 'kevin', 'jack'}
f2 = {'jason', 'tom', 'jerry', 'tony'}
# 1.求两个人共同好友
	print(f1 & f2)  # {'tony', 'jason'}
# 2.求f1独有的好友
	print(f1 - f2)  # {'jack', 'kevin'}
# 3.求f2独有的好友
	print(f2 - f1)  # {'tom', 'jerry'}
# 4.求两个人所有的好友
	print(f1 | f2)  # {'jason', 'jerry', 'tony', 'jack', 'tom', 'kevin'}
# 5.求两个人各自的好友
	print(f1 ^ f2)  # {'kevin', 'jack', 'tom', 'jerry'}
# 6.父集 子集
	print(f1 > f2)
	print(f1 < f2)

作业

1.今日博客
2.周日下午/晚上自我总复习
	一定要脱稿自己写 写不出来的忘了的 快速看笔记和视频然后继续脱稿写
3.数据类型相关练习题
    1.l = [11,22,33,44,55,66,77,88,99]
    将列表中大于60的存入字典k1键对应的列表中
    小于60的存入字典k2键对应的列表中
    	d = {'k1':[],'k2':[]}   
    2.l = [11,22,33,22,11,22,66,55,77,99]
    	对列表元素进行去重
        拔高:去重之后保持原来的顺序(不要惯性思维)
	3.关系运算
      有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
      pythons={'jason','egon','kevin','ricky','gangdan','biubiu'}
      linuxs={'kermit','tony','gangdan'}
      1. 求出即报名python又报名linux课程的学员名字集合
      2. 求出所有报名的学生名字集合
      3. 求出只报名python课程的学员名字
      4. 求出没有同时这两门课程的学员名字集合

posted @ 2021-08-15 15:13  草卆鱼  阅读(244)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3