糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > python 是世界上最好的语言!!! (狗头保命)

python 是世界上最好的语言!!! (狗头保命)

时间:2022-08-27 19:22:14

相关推荐

python 是世界上最好的语言!!! (狗头保命)

python

Day 1python广泛应用在多个领域什么是语言、什么是编程语言、为何要有编程语言什么是编程计算机五大组成部分操作系统文件后缀名的含义Day 2变量什么是变量为什么要有变量如何使用变量变量三要素小整数池的概念常量与用户交互注释python基本数据类型整型int浮点型float字符串类型str列表list字典类型dict布尔值bool元组tuple集合setpython垃圾回收机制格式化输出Day 3基本运算增量赋值链式赋值交叉赋值解压赋值逻辑运算成员运算身份运算流程控制分支结构循环结构数据类型及内置方法数字整型字符串类型Day 4数据类型内置方法(接day3)字符串补充元组字典集合字符编码未完待续...

Day 1

python广泛应用在多个领域

人工智能机器学习数据分析金融量化爬虫自动化运维/测试web开发...全栈前端后端都自己写前端htmlcssjsjQuerybootstrapvueelement-UI后端pythondjangoflasktornadofastapisani

什么是语言、什么是编程语言、为何要有编程语言

语言:语言其实就是人与人之间沟通交流的媒介 如汉语、日语、法语等等...编程语言:人与计算机之间沟通交流的媒介为何要有编程语言:因为在编程的世界里、计算机就好比是人的奴隶,人与计算机沟通的目的就是为了奴役计算机。让计算机按照人类的思维逻辑自发的去工作从而解放人力

什么是编程

编程:人将自己的思维逻辑和想法用编程语言的形式写下来的过程(写代码其实就是在将自己的想法表达出来的过程)其实学编程语言跟学英文、法语等其他语言一样的你可以将python看成是一门鸟语变量数据类型流程控制函数/类

计算机五大组成部分

# 你可以将计算机看成就是一个人学枯燥乏味知识点的时候 可以多运用比喻的手法 将知识点结合日常生活中的例子1.控制器控制器是计算机的指挥系统,用来控制计算机其他组件的运行,相当于人的大脑2.运算器运算器是计算机的运算功能,用来做算术运算和逻辑运算,相当于人的大脑算术运算 数学运算逻辑运算 事物的对错控制器 + 运算器 = 中央处理器(CPU) 3.存储器存储器是计算机的记忆功能,用来存取数据内存:相当于人的短期记忆 断电之后数据立刻丢失 外存:相当于记事本 断电数据也不会丢失 是用来永久保存数据的方法硬盘、磁带、磁盘磁带:随身听磁盘:服务器数据备份内存的存取速度要比外存快的多4.输入设备input计算机接收外界输入数据的工具键盘、鼠标类似于人的眼睛、耳朵5.输出设备output计算机向外输出数据的工具显示器、打印机类似于人的说话、写字存储器如内存、磁盘等即是输入设备又是输出设备,这一类设备我们通常称之为IO设备

操作系统

# windows linuxmax uninx ubuntu大前提:计算机是不会帮你自动做任何一件事情的 无论事情有多么的小(二极管的开通关闭)也就是说如果我们需要开发一个应用程序 我们就需要先写一段操作计算机硬件的代码,然后才能写真正应用程序代码程序员A开发快播1.先书写操作计算机硬件的代码()2.才能书写快播程序代码(1s)程序员B开发迅雷1.先书写操作计算机硬件的代码()2.才能书写迅雷程序代码(1s)程序员C开发西瓜1.先书写操作计算机硬件的代码()2.才能书写西瓜程序代码(1s)上述问题1.重复动作2.耗时巨大 你还不一定能写出来 计算机硬件太多了操作系统封装了所有操作计算机硬件的复杂程序暴露给用户简单方便的可以操作计算机硬件的接口应用程序只需要按照接口规范就可以(间接)操作计算机硬件# 计算机系统三层架构1.应用程序2.操作系统3.计算机硬件操作系统其实也是应用程序,只不过它是专门跟计算机硬件打交道的应用程序而已

文件后缀名的含义

文件的后缀名仅仅是给人看的 让人能够一眼看出改文件主要是干嘛使的而对于计算机而言 所有的数据都是二进制没有任何的区别之所以不用的文件后缀有不同的功能和处理改文件的应用程序是因为我们程序员针对不同类型的后缀名开发对应的功能软件.conf 配置文件.ini配置文件.pypython代码文件.htmlhtml标签代码...

Day 2

变量

什么是变量

变量即可以变化的量,量指的是事物的状态比如人的年龄、性别、游戏角色等级、金钱

为什么要有变量

为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以变化的 程序的执行本质就是一系列状态的变化变 是程序执行的直接体现所以我们需要有一种机制能够反应或者说保存下来程序执行时的状态以及状态的变化

如何使用变量

变量的使用必须要满足一个前提条件 先定义后使用 name = 'wanna7u'age = 19height = 163weight = 110 在内存中申请一块内存空间然后将wanna7u存入进去之后给该内存空间绑定一个门牌号name之后如果你想访问到内存中的数据必须通过门牌号即变量名的形式访问 # 变量名的定义规范1.变量名只能是数字 字母 下划线的任意组合2.数字不能开头3.关键字不能作为变量名# 变量名的书写规范1.驼峰体js推荐使用的方式AgeOfJason = 182.下划线python推荐使用的方式age_of_jason = 18 变量名要尽量做到见名知意变量名不要用拼音(尽量不要用) 书写python代码尽量符合PEP8规范最好能达到在纸上写或者在一个普通的文本文件中书写python代码也是符合规范的

变量三要素

1.id类似于内存地址2.type 变量名指向的数据的数据类型3.value 变量名指向的数据的值

小整数池的概念

a = 4print(id(a)) # 4543645840x = 3print(id(x)) # 4543645808x = x + 1print(id(x)) # 4543645840python实现int的时候有一个小整数池,为了避免与创建相同的值而重复的申请内存空间所带来的效率问题范围:-5~256之间

常量

什么是常量在程序运行过程中不会改变的量为什么要有常量程序运行过程中,有些值是固定的,不应该被改变1.配置文件配置2.圆周率怎么使用常量 同变量的使用在python中没有真正意义上的常量!!!因为python的特点就是简洁自由优美大方 尽可能的不在代码层次约束编写者很多东西都是我们python程序员墨守成规的1.在python中我们将全大写的变量看成是常量HOST = '127.0.0.1'可以修改但是在修改之前我们会额外的考虑一些修改之后可能带来的结果和影响

与用户交互

# 获取用户输入inputres = input('>>>:')print(res,type(res)) 获取到的用户输入都是字符串类型ps:扩展在python2中有两个获取用户输入的关键字1.input用户输入什么类型就存成什么类型>>> res = input('>>>:')>>>:'wanna7u'>>> type(res)<type 'str'>>>> res = input('>>>:')>>>:123>>> type(res)<type 'int'>2.raw_input 等价于python3里面的input# 输出print

注释

在学任何一门编程语言的时候应该首先掌握注释如何书写注释是代码之母在python中注释的类型1.单行注释# 这是单行2.多行注释"""这是多行"""'''这是多行'''

python基本数据类型

整型int浮点型float字符串类型str列表类型list字典类型dict布尔值bool元组tuple集合set

什么是数据,为什么要有多种数据类型的数据?

针对不同的数据也应该有对应不同的数据类型来存储(标识)年龄整数身高小数

整型int

用来记录人的年龄、出生年份、学生人数等整数相关的状态age = 18birth = 2000student_count = 82

浮点型float

用来记录人的身高、体重、薪资等小数相关的状态height = 163.5weigth = 110.1salary = -2000

字符串类型str

用来记录人的名字、家庭地址、性别等"描述性"信息name = 'wanna7u'addresss = '浙江湖州'gender = '女' 在python中定义字符串有三种方式1.单引号2.双引号3.三引号(如果左侧有变量名的话 那么表示是字符串 没有则就是注释)单双name = 'wanna7u'name1 = "wanna7u"name2 = """wanna7u"""name3 = '''wanna7u'''# 因为我们的文本当中可能也需要使用到引号info = '我说:"今天天气真好"'# python中的字符串可以做 加和乘运算name = 'wanna7u'age = '18'print(name + age) # wanna7u18info = '857'print(info*10) # 857857857857857857857857857857

列表list

存取数据千方百计的存简单快捷的取能够存储多个数据并且还可以单独的操作每一个eg:存储我们班所有的学生姓名1.用字符串存name_list = 'wanna7u egon tank sean oscar'2.列表内部可以存储多个元素,元素与元素之间逗号隔开,元素可以是任意数据类型 name_list = [111,13.14,'wanna7u',[12,3,4,5,6]] name_list = ['wanna7u', 'egon', 'tank', 'sean', 'oscar']print(name_list[2]) # 索引取值 索引0开始# tank

字典类型dict

也可以存储多个数据 并且还可以给每一个数据加上描述性的信息 明确数据的指向字典类型是用key:value的形式存储数据 其中key就是对value的描述性信息key一般情况下都是字符串 但是只要key是不可变数据类型都可以value可以是任意数据类型 person_info = {'name':'wanna7u','age':18,'hobby':['code','game']}# 字典中的数据是无序的 print(person_info['name']) # 知道即可 不推荐使用 wanna7u

布尔值bool

用来记录事物的真假两种状态的python内部所有的逻辑判断,都是转成布尔值再判断的is_ok = Trueis_ok = False 在python中我们习惯性将存储布尔值的变量名/函数名用is_开头 只要一个变量名或者函数名是用is开头的那么极大概率指向的/返回的应该是一个布尔值 主要应用在逻辑判断中if布尔值为False的有哪些数据0、None、''、[]、{}

元组tuple

元组与列表相似 也是可以存储多个任意类型的元素不同之处在于元组的元素不能被修改,即元祖相当于不可变的列表用于记录多个固定不允许修改的值 单纯的用于查看countries = ('中国','日本','美国')print(type(countries)) # <class 'tuple'>names = ('wanna7u')print(type(names)) # <class 'str'>ages = (18)print(type(ages)) # <class 'int'># 元组里面如果只有一个元素 不加逗号的情况下元素是什么类型就是什么类型 我们在使用可以存储多个数据的数据类型的时候哪怕只有一个元素 也要习惯性的把逗号加上names = ('wanna7u',)print(type(names)) # <class 'tuple'>ages = (18,)print(type(ages)) # <class 'tuple'>

集合set

使用集合只在下面两种情况下使用1.去重2.关系运算交叉并集 se = {1,2,3,4,5,6,7} s = {}print(type(s)) # <class 'dict'>d = {}print(type(d)) # <class 'dict'># 定义空集合se = set()print(type(se)) # <class 'set'>

python垃圾回收机制

解释器在执行到定义变量的语法时,会申请内存空间来存放变量的值,而内存空间有限的这就涉及到变量值所占用的内存空间回收的问题当一个变量值没有用了,就应该被回收释放内存资源由于变量名是访问到变量值的唯一方式所以当一个变量值不再关联任何的变量名的时候,我们就无法访问到该值了,该值就没有用了就应该被当成垃圾回收掉 毫无疑问内存空间的申请和回收是非常消耗精力而且有一定的风险处理不当可能会导致内存溢出等问题好在Cpython解释器提供了自动的垃圾回收机制(GC) 垃圾回收机制主要有三种方式1.引用计数2.标记清除3.分代回收1.引用计数变量值被变量名关联的次数age = 1818身上的引用计数为1 当前计数为1m = age 18身上的引用计数加1 当前计数为2del的意思是解除变量名m与变量值18的关联关系18身上的引用计数减1 一旦变量值18身上的引用计数为0 那么垃圾回收机制就会自动回收18ps:扩展知识点 循环引用的问题2.标记清除就是为了解决循环引用带来的问题堆区和栈区当内存占用率过高的时候 解释器会立刻停止程序的运行从头到位将程序中所有的值扫描一遍 计算出值身上的引用计数 打上不同的标记之后一次性清除掉所有标记为引用计数0的数据3.分代回收垃圾回收其实也是需要消耗资源的 因为每次工作都需要将所有对象的引用计数遍历一遍这是非常消耗时间的,所以引入了分代回收的机制来提高回收效率分代回收采用的是用"空间换时间"的策略核心思想:在历经多次扫描之后 都没有被回收的变量 垃圾回收机制会认为该变量是常用变量,所以垃圾回收之后对改变了的扫描频率会降

格式化输出

把一段字符串里面的某些内容替换掉之后再输出 就是格式化输出我们经常输出具有某种固定格式的内容比如:亲爱的XXX你好你XXX月的话费是XXX余额是XXX我们需要将XXX替换成不同的用户名和金额"""占位符:%s,%d%s 可以接收任意类型的值%d只能接受数字 # res = """#亲爱的%s你好!# 你%s月的话费是%s# 余额是%s# """%('wanna7u',6,100,10000000000000)# print(res)

print('%08d'%1) # 8位数字 不够用0填充 如果够了是多少就多少print('%08d'%231321312312) # 8位数字 不够用0填充 如果够了是多少就多少小练习info = """---------info of jason---------Name:wanna7uAge:18Gender:femaleJob:student--------------end--------------"""

Day 3

基本运算

在python语法中除了用=号这种简单的赋值元算之外 它还支持增量赋值、链式赋值、交叉赋值、解压赋值这些赋值运算符号存在的意义都是为了让我们的代码看上去更加的简洁

增量赋值

x = 10x = x + 1 # x += 1x = x - 1 # x -= 1x = x * 2 # x *= 2x = x / 2 # x /= 2

链式赋值

x,y,z都指向10x = 10y = xz = y# 等价于x,y,z = 10

交叉赋值

m = 10n = 20## 将m和n的值互换 # 方式1m = 10n = 20tmp = mm = nn = tmpprint(m,n)# 方式2m = 10n = 20m,n = n,mprint(m,n)

解压赋值

l = [111,222,333,444]# x = l[0]# y = l[1]# z = l[2]# o = l[3]# print(x,y,z,o)# x,y,z,o = l # 左右两边个数一致# print(x,y,z,o)# a,b = l # too many values to unpack (expected 2) ×# a,b,c,d,e = l # not enough values to unpack (expected 5, got 4) ×# a,*_ = l# print(a,_)# a,*_,b = l# print(a,_,b) # 111 [222, 333] 444

我们需要解压赋值元素但是解压出来的数据我们有不需要用那么这个时候我们会习惯用下划线作为变量名这样我们一看到就知道这是一个无用的数据 仅仅是为了满足语法需求

逻辑运算

与 and或or非 not1.and链接多个条件,会按照从左往右的顺序依次判断,一旦某个条件为False则无需继续往后判断了,可以立即判定结果就是False1 > 2 and ... and ... and ...2.or链接多个条件,会按照从左往右的顺序依次判断,一旦某个条件为True则无需继续往后判断了,可以立即判定结果就是True2 > 1 or ... or ... or ...3.混用是有优先级之分的"""但是在日常开发中我们根本不需要记忆优先级应该用括号来人为的区分优先级、提升程序的可读性"""(3 > 4 and 4 > 3) or (1 == 3 or 3 > 3)

成员运算

判断是否存在于某个数据内names = ['wanna7u','oscar','sean','tank']# print('egon' in names) # 最小判断单位是一个个的元素# print('wanna7u' in names)print('wanna7u' not in names) # False

身份运算

1.判断值是否相等print(m == n) # 判断两个变量的值是否相等2.判断内存地址是否相等(身份运算)m = [111,222,333,444]n = [111,222,333,444]print(m is n) # 判断两个变量名指向的内存地址是否相同 False

流程控制

流程控制即控制流程、具体指的是控制程序的执行过程而程序的执行分为三种结构1.顺序结构面条版代码2.分支结构if判断3.循环结构while循环for循环

分支结构

"""知识扩展:在python中是通过代码的缩进来表示代码的从属关系 缩进一般是四个空格并不是所有的代码都可以有子代码ifwhilefor函数...属于同一个代码的子代码 彼此之间一定要是同级别缩进(缩进量要保持一致) python程序员在写代码的时候是秉持着造美女的原则在写代码的""" 根据条件判断真假从而执行不同的分支对应的代码关键字if语法结构if 条件1:代码1代码2代码3elif 条件2:代码1代码2代码3elif 条件3:代码1代码2代码3else:代码1代码2代码31 女人的年龄大于40岁 叫阿姨age_of_girl = 41if age_of_girl > 40:print('阿姨好')else:print('小姐姐')2 女人的年龄大于40岁 叫阿姨 否则叫小姐姐age_of_girl = 41if age_of_girl > 40:print('阿姨好')else:print('小姐姐')"""if else连用 两者只会有一个执行(走了if就不走else)"""3 女人的年龄大于18并且小于28并且身高大于165并且体重小于120并且是漂亮的 那么表白否则阿姨好age = 25height = 170weight = 100is_beautiful = Trueif 18 < age < 28 and height > 165 and weight < 120 and is_beautiful:print('加个微信呗')else:print('阿姨好')"""if条件可以是多个 支持逻辑运算""" 4 如果成绩大于等于90 优秀 大于等于80良好 大于等于70普通 大于等于60及格 其他情况挂科score = input("score>>>:")score = int(score)if score >= 90:print('优秀')elif score >= 80:print('良好')elif score >= 70:print('普通')elif score >= 60:print('及格')else:print('挂科') 5 if嵌套age = 25height = 170weight = 100is_beautiful = Trueis_success = Falseif 18 < age < 28 and height > 165 and weight < 120 and is_beautiful:print('加个微信呗')if is_success:print('吃饭 看电影...')else:print('什么爱情不爱情的')else:print('阿姨好')实际应用场景# 获取用户输入 前端页面username = input("username>>>:")password = input('password>>>:')# 校验数据链接数据库查询if username == 'wanna7u' and password == '123':print('老板你好 我是21号技师 很高兴为您服务')else:print('没钱滚蛋')

循环结构

循环结构就是重复的执行某段代码块人类某些时间需要重复的做某件事,那么程序中也必须要有相应的机制来实现1.while循环条件循环语法结构while 条件:代码1代码2代码3"""如果条件为True,那么依次执行代码1代码2代码3执行完毕之后再次判断条件 如果还是True继续执行知道条件为False之后"""# 给用户三次登陆错误的机会 三次没过则结束循环count = 0while count < 3:username = input("username>>>:")password = input('password>>>:')# 校验数据链接数据库查询if username == 'jason' and password == '123':print('登陆成功') # 应该结束循环else:print('用户名或密码错误')count += 1# while + break"""break # 结束本层循环(在break上面离break最近的那一个while循环)"""count = 0while count < 3:username = input("username>>>:")password = input('password>>>:')# 校验数据链接数据库查询if username == 'jason' and password == '123':print('登陆成功') # 应该结束循环break # 结束本层循环(在break上面离break最近的那一个while循环)else:print('用户名或密码错误')count += 1# while嵌套flag = Truewhile flag:username = input("username>>>:")password = input('password>>>:')# 校验数据链接数据库查询if username == 'jason' and password == '123':print('登陆成功') # 应该结束循环# break # 结束本层循环(在break上面离break最近的那一个while循环)while flag:cmd = input('please input you command>>>:')if cmd == 'exit':flag = Falseprint('正在执行你的命令:%s'%cmd)else:print('用户名或密码错误')# 用户有三次尝试机会 如果三次完了 提示用户是否还想尝试三次如果还想 再给三次机会 # while + continue"""continue # 结束本层循环(在continue上面离continue最近的那一个while循环)"""# 打印1到10之间的除了7以外的所有数字count = 1while count < 11:if count == 7:count += 1# 结束本次循环直接开始下一次循环continueprint(count)count += 1# while + elsecount = 0while count <= 5:count += 1print(count)breakelse: # 当while没有被主动打断的情况下正常结束才会走elseprint('while循环正常结束了')2 for循环for循环能够做的事情while循环都可以做,但是for循环再遍历取值方面比while更加的简单语法结构for 变量名 in 可迭代对象: (字符串/列表/字典) 代码1代码2代码3# 打印1-5# count = 1# while count < 6:#print(count)#count += 1for i in range(1,6): print(i)# range(1,6)会产生1,2,3,4,5这五个数 顾头不顾尾 l = ['jason','egon','tank','sean','kevin']count = 0while count < len(l):print(l[count])count += 1for name in l:print(name)s = 'hello world'for i in s:print(i)d = {'username':'jason','password':123}for i in d:print(i)# 字典默认值暴露给外界key value是不暴露的# for循环只能获取到key 成员运算也只能参考key# for + break# for + continue# for + else规律跟while一致课后自己的尝试:d = {'username':'jason','password':123}for i in d:print(i)print()for i in d.values():print(i)print()for i in d.items():print(i)print()for i,j in d.items():print(i,j)

数据类型及内置方法

数字整型

age = 19 # 本质 age = int(10)height = 163.5# 本质 height = float(183.1)# 类型转换s = '123'res = int(s) # intage = '123'res = int(age)print(res,type(res)) # <class 'int'># int类型转换必须要确保字符串里面都是纯数字# info = '12.12'# info = 'daa123da'# res1 = int(info) # invalid literal for int() with base 10: '12.12'# float类型转换必须要确保字符串里面都是纯数字和小数点height = '12.12'res = float(height)print(res,type(res)) # <class 'float'>

字符串类型

name = 'wanna7u' # 本质 name = str('wanna7u') # 类型转换 任何数据类型(基本数据类型)都能够直接转换成字符串类型str([12,3,4])str(123)str({'username':'wanna7u'})...# 需要掌握的方法# 索引取值print(name[0]) # w# 切片print(name[0:3]) # wan# 还支持步长print(name[0:7:2]) # wan# 还支持负数print(name[-1]) # u#-1 指的是最后一位# 长度name = 'wanna7u'print(len(name)) # 7#移除首位指定的字符username = input('please input you username>>>:')username = username.strip() # 括号内不加参数就是移除首尾空格if username == 'jason':print('来宾一位')res = '¥¥wann¥a7u¥¥'print(res.strip('¥')) # wann¥a7uprint(res.lstrip('¥')) # wann¥a7u¥¥print(res.rstrip('¥')) # ¥¥wann¥a7u info = 'wanna7u|123|read|handsome'res = info.split('|') # 按照指定的字符切割字符串 得到的是一个列表数据print(res) # ['wanna7u', '123', 'read', 'handsome']res1 = info.split('|',maxsplit=1) # 默认从左往右切割字符串print(res1) # ['wanna7u', '123|read|handsome']res2 = info.rsplit('|',maxsplit=1)print(res2) # ['wanna7u|123|read', 'handsome'] info = 'My NaMe IS WanNa7u 999'print(info.lower()) # 将英文字符全部变成小写my name is wanna7u 999print(info.upper()) # 将英文字符全部变成大写MY NAME IS WANNA7U 999"""随机验证码忽略大小写比较"""res = 'wanna7u 999'print(res.startswith('wan')) # 判断字符串是否以括号内指定的字符开头Trueprint(res.endswith('999')) # 判断字符串是否以括号内指定的字符结尾True# 格式化输出之format 方式1 类似于%sres = 'my name is {} and my age is {}'print(res.format('wanna7u',18)) # my name is wanna7u and my age is 18 方式2 按照指定的索引放值res = 'my {1} name is {0} and my {0} age is {1} {0}'print(res.format('wanna7u',123)) # my 123 name is wanna7u and my wanna7u age is 123 wanna7u 方式3 指名道姓res = 'my {name} name {age} is {name} and my {name} age is {age}'print(res.format(name='wanna7u',age=18)) # my wanna7u name 18 is wanna7u and my wanna7u age is 18 res = 'hello'print('%'.join(res)) # h%e%l%l%ores1 = ['wanna7u','18','read']print('$'.join(res1)) # wanna7u$18$readres2 = ['wanna7u',18,]print('&'.join(res2)) # sequence item 1: expected str instance, int found#报错原因:18是数字,要转化成字符串才行 res = 'my name is tank my age is 18 tank tank tank' # 将tank替换成wanna7uprint(res.replace('tank','wanna7u'))# my name is wanna7u my age is 18 wanna7u wanna7u wanna7uprint(res.replace('tank','wanna7u',1)) # my name is wanna7u my age is 18 tank tank tank# 判断字符串中是否是纯数字res = '3123213'print(res.isdigit()) # Trueres1 = '3123.213'print(res.isdigit()) # Falseres2 = '31232as13'print(res.isdigit()) # Falsescore = input(">>>:")if score.isdigit():score = int(score)else:print('你TMD的要输入纯数字')info = 'my name is wanna7u my wechat XXX'print(info.count('m')) # 3 统计字符出现的次数print(info.count('m',1,6)) # 1 统计字符在规定的索引范围内出现的次数 name1 = 'wanna7u'print(name1.center(35,'$')) # $$$$$$$$$$$$$$wanna7u$$$$$$$$$$$$$$ 两端填充print(name1.ljust(35,'&')) # wanna7u&&&&&&&&&&&&&&&&&&&&&&&&&&&& print(name1.rjust(35,'#')) # ############################wanna7uprint(name1.zfill(35)) # 0000000000000000000000000000wanna7u 前面补0info = 'hello eveRyone nIce to meEt You'print(info.capitalize()) # Hello everyone nice to meet you 首字母大写print(info.swapcase()) # HELLO EVErYONE NiCE TO MEeT yOU大小写反转print(info.title()) # Hello Everyone Nice To Meet You 每个单词的首字母大写 其他都变小写info = 'hello eveRyone nIce to meEt You'print(info.islower()) # 判断是否全是小写 False print(info.isupper()) # 判断是否全是大写 Falseprint(info.isspace()) # 判断字符串是否全是空格 Falseres1 = ' ' # Trueres2 = ' ' # Trueres3 = 's s ' # Falseprint(res1.isspace(),res2.isspace(),res3.isspace()) num1 = b'4' # bytes类型 你可以看成就是二进制数据num2 = '4' # 阿拉伯数字4num3 = '四' # 中文数字 #判断是不是全是数字print(num1.isdigit()) # Trueprint(num2.isdigit()) # Trueprint(num3.isdigit()) # False #判断是否全是十进制数# print(num1.isdecimal()) # isdecimal不支持bytes类型print(num2.isdecimal()) # Trueprint(num3.isdecimal()) # False #判断是否全是实数,(罗马数字,汉字皆可)# print(num1.isnumeric()) # isnumeric不支持bytes类型print(num2.isnumeric()) # Trueprint(num3.isnumeric()) # True"""最常用的还是isdigit如果需要判断中文数字或者罗马数字 则需要使用isnumeric"""

Day 4

数据类型内置方法(接day3)

字符串补充

l = ['jason', 'egon', 'tank', 111, 222, 333] 1 索引取值l = ['wanna7u', 'egon', 'tank', 111, 222, 333]print(l[0]) # wanna7u 2 索引改值l[1] = 'QAQ'print(l) # ['wanna7u', 'QAQ', 'tank', 111, 222, 333] 3 切片操作print(l[0:5]) # ['wanna7u', 'QAQ', 'tank', 111, 222]4 步长print(l[0:5:2]) # ['wanna7u', 'tank', 222]5 长度print(len(l)) # 6 6 给列表添加元素的三种方式 6.1 尾部追加(将括号内的内容以单个元素的形式追加到列表的尾部)l.append(777)print(l) # ['wanna7u', 'QAQ', 'tank', 111, 222, 333, 777]l.append([111,222,333])print(l) # ['wanna7u', 'QAQ', 'tank', 111, 222, 333, 777, [111, 222, 333]] 6.2 任意位置插入l.insert(0,'今天居然要上学')print(l) # ['今天居然要上学', 'wanna7u', 'QAQ', 'tank', 111, 222, 333, 777, [111, 222, 333]]l.insert(2,'三天小长假没了')print(l) # ['今天居然要上学', 'wanna7u', '三天小长假没了', 'QAQ', 'tank', 111, 222, 333, 777, [111, 222, 333]] 6.3 扩展列表l1 = [111, 222, 333]l2 = [333, 444, 555]l1.extend(l2)print(l1) # [111, 222, 333, 333, 444, 555]"""extend内部原理类似于for循环加appendfor i in l2:l1.append(i)""" 7 给列表删除元素的三种方法7.1 通用方法del l[1]print(l) # ['今天居然要上学', '三天小长假没了', 'QAQ', 'tank', 111, 222, 333, 777, [111, 222, 333]]7.2 指名道姓的移除某个元素l.remove('tank')print(l) # ['今天居然要上学', '三天小长假没了', 'QAQ', 111, 222, 333, 777, [111, 222, 333]]7.3 弹出元素l.pop() # 括号内不写参数 默认移除的是列表尾部的元素print(l) # ['今天居然要上学', '三天小长假没了', 'QAQ', 111, 222, 333, 777]l.pop(1)print(l) # ['今天居然要上学', 'QAQ', 111, 222, 333, 777]"""pop的本质 是将指定的元素从列表中取出"""res = l.pop()print(res,l) # 777 ['今天居然要上学', 'QAQ', 111, 222, 333]res1 = l.remove('egon')print(res1) # None 8 颠倒顺序ll = [111, 333, 666, 444, 888]ll.reverse()print(ll) # [888, 444, 666, 333, 111] 9 排序ll = [111, 333, 666, 444, 888]ll.sort()print(ll) # [111, 333, 444, 666, 888] 升序ll.sort(reverse=True)print(ll) # [888, 666, 444, 333, 111] 降序 10 列表比较大小l1 = [111, 222, 333, 444, 555]l2 = [222, ]print(l1 > l2) # Falseprint(l2 > l1) # Truel1 = ['a', 'b', 'c']l2 = ['A', ]print(l1 > l2) # True 内部会依据ascii码表将英文字符转换成数字再比较"""按照索引位置依次比较 一旦决出胜负 不再往后比对""" 11 计数l1 = [111, 222, 111, 111, 111]print(l1.count(111)) # 4 12 清空l1 = [111, 222, 111, 111, 111]l1.clear()print(l1) # []

元组

# 由于元组内元素默认是不能修改的 所以提供给元组的内置方法也很少t = (111, 222, 333, 444)print(t[0])print(t[0:3])print(t[0:3:2])print(len(t))print(111 in t)for i in t:print(i)print(t.count(111))print(t.index(222)) # 1 返回指定元素对应的索引值

字典

d = {'username': 'wanna7u', 'password': 123, 'hobby': ['read', 'music', 'study']} 1 按key取值(字典是无序的 根本没有索引print(d['username']) # wanna7u# print(d['xxx']) # 直接报错"""字典在取值的时候 一般不推荐使用直接按照key来取""" 2 get取值 print(d.get('username')) # wanna7uprint(d.get('xxx')) # Noneprint(d.get('xxx', '该键不存在')) # 该键不存在 3 赋值操作d['age'] = 18 # 无则添加print(d) # {'age': 18, 'hobby': ['read', 'music', 'study'], 'password': 123, 'username': 'wanna7u'}d['username'] = 'QAQ' # 有则修改print(d) # {'age': 18, 'hobby': ['read', 'music', 'study'], 'password': 123, 'username': 'wanna7u'} d = {'username': 'wanna7u', 'password': 123, 'hobby': ['read', 'music', 'study']} 4 长度print(len(d)) # 3 统计的是字典里面的key:value键值对的个数# "删除"res = d.pop('password') # 弹出password对应的键值对print(res, d) # 123 {'username': 'wanna7u', 'hobby': ['read', 'music', 'study']}res = d.popitem() #随机删除列表中的一条数据,括号中无参数print(d, res) # {'hobby': ['read', 'music', 'study']} ('username', 'wanna7u')print(d.keys()) # dict_keys(['hobby'])print(d.values()) # dict_values([['read', 'music', 'study']])print(d.items()) # dict_items([('hobby', ['read', 'music', 'study'])])d.update({'username': 'tony', 'age':18})# # 有则修改 无则添加print(d) # {'username': 'tony', 'hobby': ['read', 'music', 'study'], 'age': 18}d1 = dict.fromkeys(['k1','k2','k3'],[])print(d1) # {'k1': [], 'k2': [], 'k3': []}d1['k1'].append(111)# 三个键指向的是同一个列表空间print(d1) # {'k1': [111], 'k2': [111], 'k3': [111]}dd = {'k1': 111, 'k2': 222}res = dd.setdefault('k3', 666) #获取,类似get,设置默认键值# 有则修改,无则添加 print(res) # 666print(dd) # {'k1': 111, 'k2': 222, 'k3': 666}res1 = dd.setdefault('k1', 222)print(res1, dd) # 111 {'k1': 111, 'k2': 222}"""键存在则不修改而是获取到键对应的值,键不存在则是添加新的键值对"""

集合

1.去重2.关系运算 """可变类型列表值改变内存地址不变"""不可变类型 字符串值改变内存地址肯定改变l1 = [111, 222]print(id(l1)) # 4824151368l1.append(333)print(id(l1)) # 4824151368s = 'hello world'print(id(s))# s[0] = 'j'res1 = s + 'j'print(s) # hello worldprint(res1) # hello worldj"""1.集合每一个元素必须是不可变类型2.集合内不可能存在重复的元素3.集合内元素是无序的""" # 关系运算s1 = {'zero', 'kevin', 'wanna7u', 'QAQ'}s2 = {'Jy', 'ricky', 'wanna7u', 'QAQ'} 1 求两个用户所有的好友res = s1 | s2 # 合集print(res) # {'wanna7u', 'ricky', 'QAQ', 'Jy', 'kevin', 'zero'} 2 求两个用户的共同好友res = s1 & s2 # 交集print(res) # {'QAQ', 'wanna7u'} 3 求两个用户独有的好友res = s1 ^ s2 # 对称差集print(res) # {'kevin', 'zero', 'Jy', 'ricky'} 4.1 求用户1的独有好友res = s1 - s2print(res) # {'kevin', 'zero'} 4.2 求用户2的独有好友res = s2 - s1print(res) # {'Jy', 'ricky'} 5 父集sss1 = {1, 2, 3, 4, 5, 6}sss2 = {2, 1,}print(sss1 > sss2) # True# 去重"""集合的去重是有局限性的1.只能针对不可变类型2.集合本身是无序的,去重之后无法保留原来的顺序""" lll = ['a', 'b', 1, 'a', 'a']s = set(lll) # 转集合print(s) # {1, 'b', 'a'}new_l = list(s)print(new_l) # [1, 'b', 'a']lll = [{"username": 'wanna7u', 'age': 18, 'gender': 'female'},{"username": 'jack', 'age': 73, 'gender': 'male'},{"username": 'tom', 'age': 20, 'gender': 'female'},{"username": 'wanna7u', 'age': 18, 'gender': 'female'},{"username": 'wanna7u', 'age': 18, 'gender': 'female'},]# 给列表中的元素去重 并且保留原来的顺序new_l = []for dic in lll: # 循环获取每一个字典元素if dic not in new_l:new_l.append(dic)print(new_l)"""[{'age': 18, 'username': 'wanna7u', 'gender': 'female'}, {'age': 73, 'username': 'jack', 'gender': 'male'},{'age': 20, 'username': 'tom', 'gender': 'female'} ]"""

字符编码

# 前戏字符串类型、文本文件的内容都是有字符组成的(人类能够读懂的字符),但是计算机值识别二进制数据人类能够读懂的字符 转换 二进制数据# 知识储备三大核心硬件cpu内存硬盘"""1.软件在运行之前,软件的代码及相关数据都是存放在硬盘中2.任何软件的启动都是将数据从硬盘读取到内存,然后cpu去内存中获取指令并执行3.软件的运行过程中产生的数据最先存放于内存中的,若想永久保存数据,则需要将数据由内存写入硬盘"""# 文本编辑器读取文件内容的流程 1.启动一个文件编辑器2.文本编辑器将文件内容从硬盘读取到内存3.文本编辑器会将刚刚读入内存中的内容展示到屏幕上给用户看# python解释器执行文件的流程 test.py1.启动python解释器 此时就相当于启动了一个文本编辑器2.python解释器从硬盘将test.py的内容读取到内存中3.python解释器解释执行刚刚读入内存中的文件内容,开始识别python语法"""总结:相同点1,2两个阶段其实是一样的不同点第三步"""字符编码毫无疑问由人类的字符到计算机中的数字必须经历一个过程(翻译)翻译的过程必须参照一个特定的标准 该标准称之为字符编码表,该表存放的就是字符与数字的对应关系字符编码表的发展史1.一家独大计算机是起源于美国,所以最先考虑仅仅是计算机识别英文字符于是就诞生了ASCII表1).只有英文字符与数字的对应关系2).一个英文字符对应1byte 1bytes = 8bit(2的八次方)8bit最多包含256个数字即对应256个字符足够表示所有的英文字符其实2的7次方就已经完全能够表示所有的英文字符当初为了留有余地特定空了一位2.群雄割据为了让计算机能够识别中文和英文 中国人定制了GBK1).只有中文字符、英文字符与数字的对应关系2).一个英文字符照样对应1bytes一个中文字符则需要用2bytes65535个字符同理日本人shift_JIS1.只有日文字符、英文字符与数字的对应关系同理韩国人Euc-kr1.只有韩文字符、英文字符与数字的对应关系"""如果有一个文件里面即有中文又有日文又有韩文...那么该文件无论使用哪国的编码都会出现“乱码”的现象"""3.天下一统我们需要做到让计算机能够允许我们输入万国字符均可识别不乱码万国码unicode1994才诞生1).存在所有语言中的所有字符与数字的对应关系 即兼容万国字符2).与其他编码的二进制数据也有对应关系英文字符unicodeASCII数字中文字符unicodeGBK数字...1>.unicode在存取数据的时候统一都是采用2bytes来存储,这样的话会导致一个纯英文的文件占用比原来多一倍的硬盘空间2>.数据IO耗时增加utf-8是unicode的一个优化版本,是不定长的1).英文字符 1bytes2).中文字符 3bytes 生僻字更多的bytes内存里面使用的是 unicode硬盘里面的使用是 utf-8假设:当所有其他编码的软件都消失之后,可以考虑内存硬盘统一使用utf-8(XXX)编码 # 当出现乱码的时候 一定不要慌 仅仅是编码不一致的问题eg:ascii编码 用GBK打开 肯定乱码"""字符编码针对的是文本文件解决乱码的措施用什么编码存的就用什么编码取"""# 字符的编码与解码"""数据要想基于网络传输,必须得是二进制格式""" s = '端午安康'# 将字符串编码成bytes格式在python中bytes类型你可以直接看成就是二进制数据res = s.encode('utf-8')print(res) # b'\xe7\xab\xaf\xe5\x8d\x88\xe5\xae\x89\xe5\xba\xb7'# 将bytes类型解码成对应的数据res1 = res.decode('utf-8')print(res1)# 文件头的概念# coding:utf8 接下来读取这个文件内容的时候采用coding后面指定的编码格式读取 # python2和python3python2默认的编码是ascii1.加文件头 强制修改编码# coding:utf-8一般情况下为了兼容不同版本 py文件都可能会加文件头2.在字符串的前面加一个ua = u'阿斯顿哈说' # 将字符串按照unicode存储python3默认的编码是utf-8python3中则无需加u# 总结:1.保证不乱码的核心就是按照什么编码存的就按照什么编码取2.编码与解码encodedecode# 在python中如何定义bytes类型的数据data = b'hello world' # 仅限于英文# 转字符串 data = str(data,encoding='utf-8')print(data)# 转bytes类型data = bytes(data,encoding='utf-8')print(data)3.python区别 文件头的概念 定义字符串前面加u

未完待续…

如果觉得《python 是世界上最好的语言!!! (狗头保命)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。