python小白入门学习day04
§一、周末内容回顾
1、PEP8规范
| Python Enhancement Proposal的缩写'即python增强规范'的第八号规范,帮助团队间编写python代码的规范性 |
| 1.注释在代码之后,井号需要距离代码空两格,井号距离注释内容空一格 |
| 2.注释如果自成一行,井号与内容之间空一格 |
| 3.赋值符号左右各空一格 |
| 4.逗号后面空一格 |
2、python注释语法
| |
| 1.单行注释 |
| 2.多行注释 '''多行注释 ''' |
| 3.多行注释 """多行注释 """ |
3、变量与常量
| 1.变量语法 |
| |
| 如name = 'jason' |
| 2.底层原理 |
| |
| 先在内存中申请一块内存空间储存数据值,然后把数据值绑定一个变量名,然后就可以通过变量名来访问数据值 |
| 3.变量名的命名规范 |
| 1)变量名可以由下划线、英文、数字组成 |
| 2)数字不能做变量名的开头 |
| 3)变量名尽量做到见明知意 |
| 4)变量名尽量做到不要与关键字冲突 |
| 4.变量名命名风格 |
| 1)下划线 |
| name_from_sqa = 'jason' |
| 2)驼峰体 |
| 大驼峰 NameFromSqa = 'jason' |
| 小驼峰 nameFromSqa = 'jason' |
| 5.常量的命名 |
| 用全大写来命名常量 |
4、数据类型
| 1.整型int |
| 2.浮点型float |
| 3.字符串string |
| 字符串的四种方式 1)'单引号' |
| 2)"双引号" |
| 3)'''三个单引号''' |
| 4)"""三个双引号""" |
| |
| 4.列表list |
| 列表可按照数据值索引,起始为0 |
| 5.字典dictionary |
| 字典不可以索引,但可以 按键 key 取值value |
| 'key一般是对value的描述性文字,一般为字符串' |
§二、今日内容详细
1、作业详解
| |
| l1 = [11, |
| 22, |
| 'kevin', |
| ['tony', |
| 'jerry', |
| [123, |
| 456, |
| 'jason'] |
| ] |
| ] |
| '''分步操作''' |
| |
| |
| l2 = l1[3] |
| |
| |
| l3 = l2[2] |
| |
| print(l3[2]) |
| '''简化操作''' |
| print(l1[3][2][2]) |
| |
| |
| d1 = {'name': 'jason', |
| 'others': {'a1': 'heiheihei', |
| 'a2': {'k1': 'hahaha', |
| 'k2': 'hehehe', |
| 'k3': '大宝贝'} |
| } |
| } |
| '''分步操作''' |
| |
| print(d1['others']) |
| d2 = d1['others'] |
| |
| print(d2['a2']) |
| d3 = d2['a2'] |
| |
| print(d3['k3']) |
| '''简化操作''' |
| print(d1['others']['a2']['k3']) |
| |
| |
| data = {'username': 'jason', |
| 'hobby': [11, |
| 22, |
| {'height': 183, |
| 'hobby': ['read', |
| 'run', |
| 'music' |
| ] |
| } |
| ] |
| } |
| '''分步操作''' |
| print(data['hobby']) |
| data1 = data['hobby'] |
| print(data1[2]) |
| data2 = data1[2] |
| print(data2['hobby']) |
| data3 = data2['hobby'] |
| print(data3[1]) |
| '''简化操作''' |
| print(data['hobby'][2]['hobby'][1]) |
2、基本数据类型之布尔值bool
| 1.布尔值表示两个值之一 True or False,用来判断事物的对错,是否可行,主要用于流程控制中 |
| 2.只有两种状态 |
| True 对的 真的 可行的 |
| False 错的 假的 不可行的 |
| 3.python中所有的数据都自带布尔值 |
| 布尔值为 False的数据有: False 0 None '' [] {} () |
| 4.存储布尔值的变量名一般推荐使用is开头 |
| is_delete = False |
| is_alive = True |
| |
| ''' |
| 很多程序中提供的注销账户的功能 其实底层并没有删除数据,而是修改了数据的状态 |
| 很多时候记录用户数据是否注销,只是修改了布尔值,而非删除数据 |
| id username password phone is_delete |
| 1 qiuqiu 123 110 1 |
| 2 wangcai 111 120 0 |
| ''' |
返回布尔值为 False 的数据 其余数据布尔值都为True,如下图
2、基本数据类型之元组tuple
| 1. |
| 元组,简单的理解就是将一堆数据存放到一个容器中,但这个容器有一个特点,就是'很固执',一旦定义了之后就不可改变,从某种意义上来说元组就是不可以改变的列表,功能和列表类似,同样可以进行切片、修改等操作。 |
| |
| 2.使用方法 |
| 小括号括起来,内部存放多个数据值,数据值和数据值之间用都逗号隔开,数据值可以是任何数据类型 |
| 3.代码实现 |
| t1 = (11, 22, 'sam') |
| 4.元组与列表的对比 |
| '列表:可以改变列表内的数据值' |
| l1 = [11, 22, 33] |
| print(l1[0]) |
| l1[0] = 666 |
| print(l1) |
| |
| '元组:不可改变数据值' |
| t1 = (11, 22, 33) |
| print(t1[0]) |
| t1[0] = 999 |
| print(t1) |
| |
| 举例: |
| t1 = (11, 22, [111, 222]) |
| t1[2][1] = 666 |
| print(t1) |
| """ |
| A.直接报错 |
| B.(11, 22, [111, 666]) |
| C.不知道 超出了我的认知 |
| """ |
| |
| |
| 5.元组内如果只有一个数据值时,其数据类型则不是元组,需要加上逗号 |
| t1 = (1) |
| t2 = (11.11) |
| t3 = ('jason') |
| print(type(t1), type(t2), type(t3)) |
| t1 = (1,) |
| t2 = (11.11,) |
| t3 = ('jason',) |
| print(type(t1), type(t2), type(t3)) |
| """ |
| 建议:以后在使用可以存放多个数据值的数据类型时 如果里面暂时只有一个数据值 那么也建议你加上逗号 |
| """ |
3、基本数据类型之集合set
| 1.集合只能用于去重和关系运算 |
| 后面再讲 暂且忽略 |
| 2.集合内数据只能是不可变类型 |
| 后面再讲 暂且忽略 |
| 3.大括号括起来 内部存放多个数据值 数据值与数据值之间逗号隔开 数据值不是k:v键值对 |
| 4.代码实现 |
| s1 = {1, 2, 3, 4, 5, 6} |
| 5.定义空集合与空字典 |
| {} 默认是字典 |
| set() 定义空集合 |
4、与用户交互
| """ |
| 以前银行取钱只能拿着存折去柜台跟小姐姐交流才可以 |
| 你想干嘛 我想取钱 |
| 请输入密码 滴滴滴密码 |
| 想取多少钱 我想取一个亿 |
| ... |
| 随后程序代替了小姐姐跟我们交互 |
| ATM机器 |
| """ |
| 1.获取用户输入 |
| input |
| |
| username = input('请输入您的用户名>>>:') |
| """ |
| 底层原理: |
| 1.先执行input获取用户输入 |
| 2.将输入的数据绑定给变量名username |
| 3.以后在程序中就可以使用变量名来调出用户的数据 |
| """ |
| 强调:input获取到的数据都会统一处理成 |
| |
| 2.输出内部信息 |
| print() |
| 1)括号内既可以放数据值,也可以放变量名,并且支持多个数据值或者变量名,用逗号隔开即可 |
| 2) print 自带换行符 |
| |
| 3) print也可以切换结束赋 |
| print(数据,end='默认是\n') |
| |
| 3.拓展:python2与python3中两个关键字的区别 |
| 1)python2中 |
| input方法需要用户自己提前指定数据类型,写什么类型就是什么类型 |
| raw_input方法与python3中input一致,输入的统一处理成字符串 |
| 2)python3中 |
| input方法有两种使用方法 |
| print 数据值 |
| print(数据值) |
有点不懂,看视频
5、格式化输出
| |
| eg:奖状、录取通知书、合同 |
| |
| 1.代码实现 |
| 在现实生活中大部分情况下使用下划线提示别人填写内容 |
| 但是在程序中需要使用占位符:%s %d |
| |
| |
| info = '%s同志你好' |
| 2.占位符类型 |
| '''单个占位符''' |
| print(info % 'Jason') |
| print('%s同志你好' % 'Tony') |
| print(info % ('jason',)) |
| print('%s同志你好' % ('Tony',)) |
| '''多个占位符''' |
| desc = '姓名:%s 年龄:%s 爱好:%s' |
| print(desc % ('jason', 18, 'read')) |
| print('姓名:%s 年龄:%s 爱好:%s' % ('tony', 28, 'rap')) |
| '''注意事项:有几个占位符就需要几个数据值''' |
| print('my name is %s my age is %s' % ('jason',)) |
| print('my name is %s my age is %s' % ('jason', 18, 'read')) |
| |
| 3.不同占位符的区别 |
| demo1 = '%s您好 您本月的话费是%s 余额是%s' |
| print(demo1 % ('jason', 100, 1)) |
| demo2 = '%d您好 您本月的话费是%d 余额是%d' |
| print(demo2 % ('tony', 1, -100)) |
| |
| 4.设置占位个数 |
| 比如设置8位数,即 '%08d',如果超出八位的数据值则以该数据值填充 |
| print('%08d'% 123) |
| print('%08d'% 123456789) |
6、基本运算符
| 1.数学运算符 |
| |
| 2.简化写法 |
| n = 10 |
| n += 1 |
| n -= 1 |
| n *= 1 |
| n /= 1 |
| n %= 1 |
| n //= 1 |
| n **= 1 |
| 3.比较运算符 |
| |
7、常用赋值符
| 1.链式赋值 |
| name = 'jason' |
| name1 = name |
| name2 = name |
| 则链式赋值可以改写成: |
| name = name1 = name2 ='jason' |
| 2.交叉赋值 |
| m = 100 |
| n = 999 |
| |
| 1)方法一:采用中间变量 做中介 |
| temp = m |
| m = n |
| n = temp |
| print(m, n) |
| 2)方法二:交叉赋值语法 直接交换 |
| m, n = n, m |
| print(m, n) |
| 3.解压赋值 |
| name_list = ['jason', 'sam', 'amy', 'jack'] |
| |
| |
| name1, name2, name3, name4 = name_list |
| '解压赋值在使用的时候,正常情况下需要保证左边的变量名和右边的数据值个数一致' |
| a, b = name_list |
| a, b, c, d, e = name_list |
| |
| '当需要解压的数据个数特别多我们只需要使用其中几个的时候,那么可以打破上述的规则' |
| a, *b = name_list |
| print(a) |
| print(b) |
| a, c, *b = name_list |
| print(a) |
| print(c) |
| print(b) |
| a, *b, c = name_list |
| print(a) |
| print(b) |
| print(c) |
| |
| '当数据值不准备使用的时候,可以用下划线来作为变量名,精简代码' |
| a, *_, c = name_list |
8、逻辑运算符
| |
| 1.and 与 |
| and连接的多个条件必须全部成立,结果才能通过成立 |
| |
| |
| 1 > 2 and 4 < 8 and 10 < 1 and 1 == 2 |
| 如果条件中全部由and组成那么判断起来非常的简单 只要发现一个不成立 结果就不成立 |
| print(1 < 10 and 666) |
| print(1 < 10 and 2 < 8) |
| print(111 and 222) |
| |
| |
| |
| |
| 2.or 或 |
| or连接的多个条件只要有一个成立,结果就成立 |
| |
| |
| 1 > 2 and 4 < 8 and 10 < 1 and 1 == 2 |
| 如果条件中全部由or组成那么判断起来非常的简单,只要发现一个成立,结果就成立 |
| print(1 < 10 or 666) |
| print(666 or 1 > 10) |
| print(0 or False) |
| print(0 or 111) |
| |
| 3.not 非 |
| 取反 |
| 类似于说反话 |
| ''' |
| 三者混合使用的时候有优先级之分,但无需记忆,需要我们人为设计优先级 |
| |
| eg: 先乘除有加减 但是可以使用括号来改变优先级 |
| (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) |
| ''' |
9、成员运算符
| 1.用途:用于判断个体在不在群体内 |
| |
| 1)列表中 |
| name_list = ['jason', 'kevin', 'oscar', 'jerry'] |
| print('tony' in name_list) |
| print('tony' not in name_list) |
| print('j' in name_list) |
| 2)字符串中 |
| s1 = 'hello world' |
| print('d' in s1) |
| 3)字典中 |
| d1 = { |
| 'username':'jason', |
| 'pwd':123 |
| } |
| print('jason' in d1) |
| print('username' in d1) |
10、身份运算符
| ''' |
| id() 返回一串数字,该数字可以看作是内存的地址 |
| ''' |
| 1.代码 |
| is 用于判断内存地址是否相同 |
| == 判断数据值是否相同 |
| |
| l1 = [11, 22, 33, 44, 55, 66, 77, 88] |
| l2 = [11, 22, 33, 44, 55, 66, 77, 88] |
| print(l1 == l2) |
| print(id(l1)) |
| print(id(l2)) |
| print(l1 is l2) |
| |
| 2.例外的情况 |
| 1) |
| i1 = 11 |
| i2 = 11 |
| print(i1 is i2) |
| 2) |
| s1 = 'jason jason jason' |
| s2 = 'jason jason jason' |
| print(s1 is s2) |
| 不同的环境下可能优化的程度不一样 |
| |
| """ |
| 了解 |
| 值相同 内存地址可能不同 |
| 内存地址相同 值肯定相同 |
| """ |
11、今日感想
| 1. |
| 今日状态还可以,但是对于,所学内容的大框架下的一些知识点的细部应用还应该多多注意,在pycharm中多多练习,更加可以强化记忆 |
| 2. |
| 在睡觉前和起床赖床的时候打开看一看,帮助记忆 |
| 3. |
| 换成中文拍照存在手机里,看不懂的时候拿出来对应看一看中文意思加深了解 |
12、作业
| 1. |
| desc = " Name:%s\n Age:%s\n Sex:%s\n Job:%s" |
| print(desc % ('Jason', |
| 18, |
| 'male', |
| 'Teacher') |
| ) |
| 2. |
| 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 = 0 or False and 1 |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY