-
文本编辑器使用
预科视频day01
-
编程语言的发展史
-
编程语言的分类
-
python解释器
-
python应用领域
-
配置环境变量
-
运行第一个python程序(步入程序员世界)
-
语法注释
-
变量的使用(重要)
前戏
1.什么是编程语言
语言
中文 英文 日文(人与人之间沟通交流的媒介)
目的
实现彼此之间的数据交互(沟通交流的媒介)
编程语言
人与计算机之间沟通交流的媒介
目的
让计算机能够理解人的想法
'''学习编程其实就是在学习一门外语'''
2.什么是编程(******)
程序员将自己的思维逻辑和想法用计算机能够理解的语言写下来的过程
编程的结果是产生一堆文件
"""
类比法:让小明去买东西 告诉他应该怎么走买什么
告诉小明该怎么做的过程其实就相当于是在编程
"""
编程语言发展史
"""
前期必备知识
计算机是基于电工作的 而电信号只有高低电频两种状态
我们人为的将高低电频定义为数字0和1
也就意味着在计算机的世界只认识0和1的二进制数
0:你
1:我
00:
01:
10:
11:
000:
001:
010:
...
单位换算(重要)
8bit = 1bytes # bit表示二进制位 bytes表示字节
1024bytes = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
...
"""
1.机器语言
计算机刚开始发明出来的时候程序员与计算机沟通交流的方式
即直接使用二进制数与计算机交流
优点
计算机能够直接听懂 执行效率高
缺点
学习难度太TMD大 开发效率低
2.汇编语言
用简单的英文单词来表示一串二进制数字
虽然降低了一点点难度但是本质并没有改变 还是在死记硬背
优点
降低了记忆的难度 略微提高了开发效率
缺点
学习难度还是TMD的大 开发效率还是很低
3.高级语言
用人类能够理解的字符与计算机沟通交流
人类的字符计算机看不懂所以这其中需要有一个"翻译官"
优点
极大的降低了学习难度 大幅度提升开发效率
缺点
计算机无法直接识别需要"翻译" 所以执行效率上没有上述两个语言包快
# 高级语言:python Java C++ C# php Golang...
编程语言分类
# 1.编译型 C++
类似于谷歌翻译(一次性整体翻译)
eg:有一篇英文文章 直接拷贝到谷歌翻译中 全部翻译成中文
优点
一次性翻译之后可以重复使用翻译之后的结果
缺点
如果过程中有bug(问题/错误) 还需要从头到尾翻译一遍
# 2.解释型 python
类似于同声传译(说一句翻译一句)
eg:类似于外交官身后的翻译官 说一句翻译一句
优点
如果过程中有bug(问题/错误) 也不影响翻译的速度
缺点
执行速度没有编译型快
"""
针对不同类型的编程语言
如果想在计算机上面执行就必须下载对应的编译器或者解释器
如果要学C++就必须先下载一个编译器
如果要学python就必须先下载一个解释器
"""
python解释器(重要)
"""
IT行业一般都不会使用最新版本的软件(除非已经通过市场校验)
也不会主动去更新老项目的软件版本(画蛇添足)
"""
主要分为两大主流版本
1.python2.X
最高只有python2.7 并且在2020年就不再维护更新了
# 但是很多公司有很多老的项目使用的还是老版本解释器
2.python3.X
最高已经到达python3.9 但是我们一般使用的都是python3.6
# 3.6目前最为文档 兼容性最佳
下载解释器
https://www.python.org/downloads/windows/
1.下载可执行文件
xxx.exe
2.双击该文件 选择安装路径
点击下面的自定义安装选项
3.直接点击next即可
4.尽量不要放在C盘 选择一个其他盘并且容易找到的位置
eg:
D:\python36
5.等待安装完毕之后点击close关闭即可
6.去指定的位置验证是否存在相应的文件
出现了很多文件说明安装成功了
使用解释器
1.windows+r键并在输入框中输入cmd命令回车
2.输入文件名称查找文件
1.先从当前路径下查找
2.再去系统环境变量中依次查找
3.如果还没有则报错
# 两种启动解释器的方式
1.在cmd窗口中切换路径
2.将python解释器所在的路径添加到环境变量中
"""
环境变量查看
1.右键此电脑点击属性
2.点击左侧高级系统设置
3.点击右下方环境变量
4.双击下方变量名为path
windows DOS命令
切换路径
切换盘符
D:
切换文件目录
cd python36
"""
python多版本共存
1.将不同版本python.exe所在路径添加到环境变量中
2.拷贝python.exe并重命名(python3 python2)
3.关闭当前cmd窗口重新打开一个即可实现多版本切换
# 练习多版本切换配置
python应用领域
python国内最早兴起于linux运维
1.人工智能
2.金融量化
3.数据分析
4.自动化运维、测试
5.网络爬虫
6.web开发
7.erp系统
# 截至目前位置没有任何一门编程语言能够跟python一样多点开花
运行第一个python程序(步入程序员世界)
1.直接在解释器内部执行
print('hello world!') # 让计算机打印hello world!
2.使用解释器执行文件
python3 文件路径
编程软件
"""
如果你想要操作表格你会使用excel
如果你想要制作ppt你会使用powerpoint
如果你想要编写文本文件你会使用word
...
同理你想要编写程序你会使用专门的编程软件
提供了很多编程相关的功能
"""
1.vs code
对小白用户不太友好 功能并不是很强大 优点是小 轻便
2.pycharm(推荐)
对小白友好 功能异常强大 缺点是"收费"
下载
https://www.jetbrains.com/pycharm/download/#section=windows
# 一定要下载专业版 社区版功能太少
双击exe文件
1.直接点击next
2.如果之前安装过会提示卸载没有则忽略
3.选择pycharm安装路径(尽量不要选C盘即可)
4.选择性的勾选
eg: 创建桌面图标 添加环境变量等
5.支持保持默认的Jetbrasins点击install即可
收费问题
'''任何收费的软件到了咱大中国都可以变成破解版'''
1.可以先点击使用30天
2.之后可以考虑破解
破解方式
1.激活码破解
点击activation code
1.百度搜索
2.淘宝买(5~15)
2.修改配置文件破解(了解)
3.插件方式破解(尝试)
# 针对最新版本的pycharm破解成功率偏低 目前最容易破解的是2018.1版本
0810(周二)内容概要
-
pycharm破解操作
-
python语法注释
-
变量与常量(重要)
-
python基本数据类型(非常重要)
技术来源于生活 # 类比学习法
pycharm破解操作
pycharm软件较大,启动较慢,长时间使用的情况下大概会占用1GB+的内存
new project # 创建一个新项目(文件夹)
open # 打开一个项目(文件夹)
get from vcs # 从远处仓库打开项目(暂时忽略)
1.插件反复试用
点击help选择eval reset
2.点击help选择about查看激活有效时间
# 破解方式有很多 任意一种都可以
pycharm基本操作
1.设置相关
编程背景
file
settings
appearance
选择Theme即可(推荐使用黑色)
字体缩放
file
settings
editor
general
勾选change font size ...
# 上述所有操作必须最后点击右下角apple ok方可生效
"""
文件后缀名
.txt 文本文件
.xlsx 表格文件
.mp4 视频文件
.mp3 音频文件
.png 图片文件
文件后缀名主要就是用来给人看的 区分不同的文件内容
.py python代码文件
"""
2.创建文件
鼠标悬浮在创建的文件夹上面右键选择new
不同类型的文件参考群内截图
python file
3.运行文件
悬浮在文件内容区域 鼠标右键选择run 文件名称即可
python语法注释
注释:就是对一段代码的解释说明(不参与执行 主要就是给人看的 起提示作用)
eg:
# 下面是打印0到9的python代码
for i in range(10):
print(i)
"""
书写规范
如果是单行注释并且写在代码的上方 那么注释内容与警号之间空一格
如果是单行注释并且写在代码的后方 那么警号与代码之间空两格 内容与警号之间空一格
快捷方式
code
reformat code
"""
1.单行注释
# 注释内容
2.多行注释
三引号
'''注释内容'''
"""注释内容"""
ps:pycharm中如何快速注释/解开注释代码 ctrl + ?
# 写代码的时候一定要养成写注释的习惯
变量
变量即变化的量 用来记录事物的变化(也可以不变)状态
eg:人的年龄 薪资 体重等
name = 'jyb'
age = 18
addr = '芜湖'
"""
语法结构
变量名 赋值符号 变量的值(真正的数据)
强调:变量推荐使用英文 不建议使用汉语拼音 更不要使用中文
"""
内部本质
以name='jyb'为例
1.先看赋值符号的右侧
在内存空间中申请一块内存空间将jyb存储进来
2.给这块空间绑定一个变量名
该变量名就是访问该空间的坐标详细
# 要想访问内存中的数据必须通过变量名
课堂小练习
练习题1 # 一个变量名只能绑定给一个值
name = 'jyb'
name = 'kevin'
练习题2 # 考察赋值符号的本质用法
x = 1
x = x + 1
练习题3 # 多个变量名可以绑定同一个值
name = 'jyb'
name1 = name
name2 = name
变量名的命名规范
1.变量名只能由数字、字母、下划线组成
2.数字不能开头 下划线尽量也不要开头(有特殊含义)
3.变量名一定要做到"见名知意"
4.变量名不能与关键字(自带功能)冲突
小练习:
8name = 'jyb' # 报错
_url = 'https://www.baidu.com' # 正确
user_name_666 = 'heiheihei' # 正确
name@ = 'haha' # 报错
变量名的命名风格
1.下划线式 # python推荐使用下划线式
user_name_from_db = 'jyb'
2.驼峰体 # JavaScript推荐使用驼峰体
大驼峰 # 所有单词首字母大写
UserNameFromDb = 'jyb'
小驼峰 # 首字母不大写其他都大写
userNameFromDb = 'jyb'
"""无论使用哪种风格都没有关系 但是尽量不要混着用"""
常量
常量即不变的量
eg:圆周率
在python中没有真正意义上的常量 我们"墨守成规"的将全大写的变量名看成是常量
HOST = '127.0.0.1'
PORT = 3306
在其他编程语言中是存在真正意义上的常量 定义了就无法修改
"""JavaScript中"""
const pi = 3.14
pi = 666 # 报错
数据类型
事物的状态千变万化对应的变量的值也应该有很多种类型
"""
如何查看数据的数据类型
type()
"""
1.整型int
大白话:相当于生活中的整数
作用:班级人数 年龄 年份
定义: # 直接写整数即可
stu_num = 15
age = 18
year = 2021
2.浮点型float
大白话:相当于生活中的小数
作用:身高 体重 薪资
定义: # 直接写小数即可
height = 1.83
weight = 75.5
salary = 3.1
3.字符串str
大白话:相当于一段文字描述
作用:主要用于描述性性质的内容
定义:
name = 'jyb'
name1 = "jyb"
name2 = """jyb"""
name3 = '''jyb'''
# 三引号如果左边有变量名和赋值符号那么就是字符串 否则就是注释
字符串也支持加法和乘法
name + name1
name * 5
0811(周三)内容概要
-
python基本数据类型
-
与用户交互
-
基本运算符
-
流程控制(重点)
掌握了流程控制就可以编写一些常见应用程序 eg:用户登录注册
python基本数据类型
# 列表list
"""
中括号括起来 内部可以存放多个元素
元素与元素之间逗号隔开 元素可以是任意数据类型
"""
stu_list = ['jyb', 'kevin', 'tony']
# 1.索引取值(在IT领域索引一般都是从0开始 不是日常生活中的从1开始)
print(stu_list[1]) # kevin
小练习
l1 = [11,22,33,[44,55,['jyb','kevin','tony']]]
需求:通过索引取值获取到kevin
# 先明确l1大列表有几个元素 4个元素
# 再明确你要的数据在哪个元素里面 最后一个
# l2 = l1[3] # 将大列表第四个元素赋值给l2变量名
# l3 = l2[2] # 将l2小列表第三个元素赋值给l3变量名
# print(l3[1])
"""简化写法"""
print(l1[3][2][1])
# 字典dict
"""
大括号括起来内部可以存放多个元素 元素的组织形式是K:V键值对
键值对与键值对之间逗号隔开
K一般是对V的描述性性质的数据 大部分情况下是字符串
V类似于变量的值可以是任意数据类型
"""
user_dict = {
'name': 'jyb',
'age': 18,
'hobby': 'read'
}
print(user_dict['name']) # jyb
小练习
user_dict = {
'name': 'jyb',
'age': 18,
'hobby': 'read',
'addr': {'country': 'China', 'city': ['芜湖', '合肥']}
}
需求:获取数据芜湖
# 1.先获取芜湖所在的字典
# d1 = user_dict['addr']
# print(d1) # 'country': 'China', 'city': ['芜湖', '合肥']}
# 2.获取芜湖所在的列表
# l2 = d1['city']
# print(l2) # ['芜湖', '合肥']
# 3.获取列表中芜湖
# print(l2[0])
"""简化写法"""
print(user_dict['addr']['city'][0])
# 布尔值bool
就只有两种状态
True
False
用来表示对错 是否可行等逻辑判断
"""
一般情况下存储布尔值的变量名习惯使用is开头
is_right = True
is_delete = False
"""
# 元组tuple
"""
小括号括起来 内部可以存放多个元素 元素与元素之间逗号隔开
元素可以是任意数据类型
元组内元素不支持修改而列表可以(小外号:不可变的列表)
"""
t = ('jyb', 11, 22)
l = ['jyb', 11, 22]
# l[0] = 'jybNB'
# print(l)
# print(t[0])
# t[0] = 'jybNB' # 报错
# 笔试题
t1 = (11, 22, [33, 44])
t1[2][0] = 666
print(t1) # 正确答案是B
"""
A 报错
B (11, 22, [666, 44])
C 未知
"""
# 集合set(了解即可 作为数据分析师使用较少)
"""
大括号括起来 里面可以存档多个元素 元素与元素之间逗号隔开
元素不是K:V的形式 并且集合内元素不可以是任意类型
大部分情况下只能是数字和字符串(不可变类型)
功能
去重
去掉重复的元素
关系运算
交叉并集
共同好友 共同关注
"""
s = {1, 2, 3, 4, 5, 6, 7, 8}
与用户交互
1.输入
input()
# 获取用户输入
username = input('请输入用户名>>>:')
print(type(username))
"""input获取到的用户输入都会存为字符串类型"""
2.输出
print()
# 可以打印一个值也可以一次性打印多个值
print(123)
print(111,222,333,444)
格式化输出
# 默认的文本格式
info = "亲爱的%s你好!你%s月的话费是%s,余额是%s"
# 占位符:提前占位置之后给对应的数据填充 %s
print(info % ('jyb', 8, 100, -100))
print(info % ('tony', 8, 200, -200))
print(info % ('kevin', 8, 500, 8800))
# 文本里面有几个%s后面就需要给几个真实的数据
小练习
# username = input('username>>>:')
# age = input('age>>>:')
# print('my name is %s and my age is %s' % (username, age))
res = """
------------ info of %s -----------
Name : %s
Age : %s
gender : %s
Job : %s
------------- end -----------------
"""
username = input("请输入您的用户名>>>:")
age = input('请输入您的年龄>>>:')
gender = input('请输入您的性别>>>:')
job = input('请输入您的工作岗位>>>:')
print(res % (username, username, age, gender, job))
# 占位符:%d 只能给数字占位
# res = 'my name is %s my age is %d'
# print(res%('jyb',18))
# 可以使用%d生成固定位数的单号
print('%08d' % 123)
print('%08d' % 123133)
print('%08d' % 666)
print('%08d' % 2346456546456757)
基本运算符
# 算术运算符
# print(2 ** 3) # 8
# print(9 // 2) # 4
# 比较运算符
# print(1 > 2) # False
# print('hello' > 'world') # False
"""
字符串比较的时候是按照对应的数字比较
A-Z 65-90
a-z 97-122
"""
# 增量赋值(简化代码)
# x = 10
# x = x + 1 # 等价于 x += 1
# x = x - 10 # 等价于 x -= 10
# x = x * 20 # 等价于 x *= 20
# x = x / 10 # 等价于 x /= 10
# 链式赋值
# x = 'jyb'
# y = x
# z = x
# 链式赋值(简化代码)
# x = y = z = 'jyb'
# 交叉赋值
m = 10
n = 20
# 方式1 中间变量
# tmp = m
# m = n
# n = tmp
# print(m,n)
# 方式2 交叉赋值(简化代码)
# m, n = n, m
# print(m, n)
# 解压赋值
stu_name = ['jyb', 'kevin', 'tony']
# name1 = stu_name[0]
# name2 = stu_name[1]
# name3 = stu_name[2]
"""默认情况下左右两边要保持相同的个数"""
name1, name2, name3 = stu_name
# print(name1, name2, name3)
"""也可以利用*号打破位数限制"""
l1 = [11,2,2,3,4,5,6,7,8,67,5,4,5,7,5,3,5,4]
a,b,*_,d = l1
print(a,b,d,_)
0812(周四)内容概要
-
逻辑运算符
-
成员运算符
-
身份运算符
-
流程控制(重点 难点)
if判断 while循环 for循环
-
数据类型的内置方法(重点)
逻辑运算符
与 and
链接的多个条件必须都满足结果才成立否则不成立
eg:相亲对象身高165以上并且体重110以下并且长得漂亮并且家里有钱
或 or
链接的多个条件有一个满足即可
eg:相亲对象身高165以上或者体重110以下或者长得漂亮或者家里有
非 not
对条件取反
eg:说反话
你这样的举动真他妈的让我高兴啊>>>很不高兴
print(1 > 2 and 4 > 1) # False
and链接多个条件 只要有一个是False就不用往后看了 结果肯定是False
print(False and 1 < 4 and 5 > 1 and 9 > 6 and 8 > 3 and 7 > 9)
print(1 > 2 or 4 > 1) # True
or链接多个条件 只要有一个是True就不用往后看了 结果肯定是True
print(False or 1 < 4 or 5 > 1 or 9 > 6 or 8 > 3 or 7 > 9)
print(not True) # False
"""
上述三个关键字如果混合使用是存在优先级的 但是我们不需要考虑优先级
在书写的时候应该通过括号强制规定优先级关系
eg:先乘除后加减 打破顺序可以使用括号
"""
成员运算符
判断某个个体(局部)在不在某个群体(整体)内 in
stu_list = ['jyb', 'tom', 'kevin', 'tony']
guess_name = input('name>>>:')
print(guess_name in stu_list)
print(guess_name not in stu_list)
身份运算符
"""
如何查看变量值所在的"内存地址"
id() 返回一串数字 可以用来表示内存地址
"""
>>> name1 = 'jyb kevin tony'
>>> name2 = 'jyb kevin tony'
>>> id(name1)
1358885155152
>>> id(name2)
1358885155224
>>> x = y = z = 'jyb kevin tony'
>>> id(x)
1358885155296
>>> id(y)
1358885155296
>>> id(z)
1358885155296
>>> name1 == name2 # 判断两个变量的值是否相等
True
>>> name1 is name2 # 判断两个变量绑定值的内存地址是否相等
False
两个变量的值相等 那么内存地址不一定相等
两个变量的内存地址相等 那么值肯定相等
流程控制(重点)
流程控制就是控制执行的流程
流程主要分为三种
1.顺序结构(忽略)
从上往下依次执行(截止目前为止我们所写的代码都是顺序结构)
作业:写博客使用Typora画出来
2.分支结构(重点)
根据条件的不同执行不同的流程
作业:写博客使用Typora画出来
3.循环结构(重点)
根据条件循环往复的执行某一个过程
作业:写博客使用Typora画出来
必备知识
"""
在python中通过代码的缩进来表示代码的从属关系
如果上面的代码没有缩进下面的代码缩进了
那么表示下面的代码属于上面的代码 下面代码是否就要取决于上面的代码
在python中并不是所有的代码都可以拥有子代码
可以拥有子代码的
if
属于同一个关键字的多行子代码必须要保持相同的缩进量
ps:python中缩进一般推荐使用四个空格(tab键)
小技巧:当某一行代码的结尾出现了冒号 那么下一行代码必缩进
"""
分支结构
# 如果年龄大于28岁 叫阿姨
age = 20
if age > 28:
print('阿姨好')
"""
语法结构
if 条件:
条件成立之后执行的子代码
"""
'''小练习'''
username = input('username>>>:')
if username == 'jyb':
print('欢迎jyb')
# 如果年龄大于28岁 叫阿姨 否则叫小姐姐
age = 38
if age > 28:
print('阿姨好')
else:
print('小姐姐好')
"""
if 条件:
条件成立执行的子代码
else:
条件不成立执行的子代码
"""
# 如果:成绩>=90,那么:优秀
# 如果成绩>=80且<90,那么:良好
# 如果成绩>=70且<80,那么:普通
# 如果成绩>=60且<70,那么: 及格
# 如果成绩<60 那么: 挂科
score = 50
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
elif score >= 60:
print('及格')
else:
print('挂科')
"""
语法结构
if 条件1:
条件1成立执行的代码
elif 条件2:
条件1不成立条件2成立执行的代码
elif 条件3:
条件1和2都不成立条件3成立执行的代码
else:
上述条件都不成立执行的代码
中间的elif可以有多个 if 和 else只能有一个(前提:在同一个分支结构中)
if elif else连用 肯定只会走一个 其他的肯定不走
"""
# if嵌套
# 如果年龄大于28岁 叫阿姨 否则跟小姐姐要微信
# 要么成功要么失败
is_success = True
age = 18
if age < 28:
print('小姐姐 加个微信呗')
if is_success:
print('吃饭 看电影 天黑了~~~')
else:
print('去你妹的 臭流氓!')
else:
print('不好意思看错人了!')
循环结构
# while True:
# username = input('username>>>:')
# password = input('password>>>:')
# print(username, password)
"""
语法结构
while 条件:
条件成立之后执行的循环体代码
1.先判断条件是否成立 如果成立
2.执行while循环体代码 代码执行完毕之后继续判断条件是否成立
3.如果还成立则继续执行while循环体代码 代码执行完毕之后继续判断条件是否成立
4.重复执行步骤2和3直到条件不成立为止
"""
# 利用while循环打印1-10
count = 1
while count < 11:
print(count)
count += 1
# 利用while循环打印1-10 但是排除7
count = 1
while count < 11:
# 判断count是否等于7 如果等于则不打印
if count == 7:
# 结束本次循环 开始下一次循环
count += 1
continue # 直接跳到循环体的条件判断处重新判断条件
print(count)
count += 1
# 利用while循环打印1-10 但是到7之后直接结束循环
count = 1
while count < 11:
# 判断count是否等于7 如果等于则结束循环
if count == 7:
# 结束本层循环
break
print(count)
count += 1
"""
break和continue只能影响所在层的while
"""
count = 1
while count < 11:
# 判断count是否等于7 如果等于则结束循环
if count == 7:
while True:
cmd = input('cmd>>>:')
print(cmd)
if cmd == 'q':
break
print(count)
count += 1
0813(周五)内容概要
- 循环结构之for循环(简单)
- 数据类型的内置方法(重要)
- 字符编码
- 文件操作(代码操作文件读写)
循环结构之for循环(简单)
"""
for循环能够实现的事情while循环都可以实现
但是for循环在很多时候语法更加简单快捷
"""
name_list = ['jyb', 'tony', 'kevin', 'jerry']
# 循环打印列表中每一个元素
# while循环
# count = 0
# while count < 4:
# print('>>>:',name_list[count])
# count += 1
# for循环
"""
for循环特别擅长应用在循环取值方面
for 变量名 in 可迭代对象(字符串 列表 字典 元组):
for循环体代码
for循环不需要添加结束条件 会随着取值的完毕自动结束
"""
for name in name_list:
print('>>>:', name)
res = 'hello world!'
# 当值没有明确的类别时 变量名可以取i、j、k、item等
for i in res:
'''for循环字符串会将字符串里面单个单个字符依次赋值给变量名i'''
print(i)
user_dict = {'username': 'jyb', 'password': 123, 'hobby': 'read'}
for k in user_dict:
"""for循环字典只会取出字典的key value是无法直接获取的"""
print(k)
"""
容器类型
内部能够存档多个元素的数据类型都可以称之为容器类型
列表 字典 元组 集合
for循环针对容器类型都可以循环取值 在此基础之上还可以对字符串取值
"""
range用法
for i in range(0, 101): # 本质是一个迭代器(忽略) 你可以简单的看成是一个列表
print(i)
for i in range(5):
print(i) # 一个参数 默认从0开始(顾头不顾尾)
for i in range(5,10):
print(i) # 两个参数 第一个是起始位包含在内 第二个是终止位不包含(顾头不顾尾)
for i in range(0,250,25):
print(i) # 三个参数 最后一个是数字间隔 类似于产生等差序列
数据类型内置方法
补充
"""
如何查看数据类型拥有的方法
句点符
数据类型.
pycharm会自动列出该数据所有的方法
"""
# 整型int
int()
1.数据类型转换
2.其他进制字符串转换十进制数
n = '11'
print(int(n)) # 正确
n1 = '11.11'
print(int(n1)) # 报错 小数点整型无法转
n2 = 'jyb'
print(int(n2)) # 报错 数字以外根本无法转换
# 将十进制转换成二进制
print(bin(100)) # 0b1100100
# 将十进制转换成八进制
print(oct(100)) # 0o144
# 将十进制转换成十六进制
print(hex(100)) # 0x64
"""
以后如果看到数字前面
ob开头则是二进制数
0o开头则是八进制数
0x开头则是十六进制数
"""
# 其他机制转十进制
print(int('0b1100100', 2))
print(int('0o144', 8))
print(int('0x64', 16))
# 浮点型float
n1 = '11'
print(float(n1)) # 11.0
n2 = '11.11'
print(float(n2)) # 11.11
n3 = 'jyb'
print(float(n3)) # 报错
# 字符串str
1.str可以将任意数据类型转换成字符串
res = 'hello world'
1.统计字符个数
print(len(res)) # 11
2.索引取值
print(res[0]) # h
3.切片取值
res = 'hello world'
print(res[1:5]) # ello 顾头不顾尾
4.步长(间隔) 2表示间隔一个取一个 不写默认是1没有间隔
print(res[1:8:2]) # el o
5.移除字符串首尾指定的字符
name = '$$jyb$$'
print(name.strip('$')) # jyb
print(name.lstrip('$')) # jyb$$
print(name.rstrip('$')) # $$jyb
name1 = ' jyb '
print(len(name1)) # 9
print(len(name1.strip())) # 5 括号内不写参数默认移除空格
username = input('username>>>:').strip()
if username == 'jyb':
print('登录成功')
else:
print('登录失败')
6.按照指定的字符切割数据
data = 'jyb|123|teacher|read'
print(data.split('|')) # ['jyb', '123', 'teacher', 'read']
print(data.split('|', maxsplit=1)) # ['jyb', '123|teacher|read']
print(data.rsplit('|', maxsplit=1)) # ['jyb|123|teacher', 'read']
7.大小写转换
res = 'Yu0My'
print(res.upper()) # 转大写 YU0MY
print(res.lower()) # 转小写 yu0my
"""图片验证码之所以不需要校验大小写 内部就是统一转大小写再比对"""
print(res.isupper()) # 字符串是否是纯大写
print(res.islower()) # 字符串是否是纯小写
8.判断字符串是否是纯数字
print('123'.isdigit()) # True
print('jyb123'.isdigit()) # False
9.统计字符出现的次数
res = 'my name is jyb jyb jyb jyb jyb'
print(res.count('jyb')) # 5
10.替换指定的字符
res = 'my name is jyb jyb jyb jyb jyb'
print(res.replace('jyb', 'tony')) # my name is tony tony tony tony tony
print(res.replace('jyb', 'kevin', 2)) # my name is kevin kevin jyb jyb jyb
11.按照指定的字符拼接字符串
l = ['jyb','123','read']
print('|'.join(l)) # jyb|123|read
name1 = 'jyb'
pwd1 = '123'
hobby1 = 'study'
print(name1 + '|' + pwd1 + '|' + hobby1) # jyb|123|study
# 列表list
只能够转支持for循环数据类型
l1 = [11, 22, 33, 44, 55, 66]
# 1.统计长度(元素的个数)
# print(len(l1)) # 6
# 2.索引取值
# print(l1[0]) # 11
# 3.切片操作
# print(l1[0:4]) # [11, 22, 33, 44] 顾头不顾尾
# 4.步长
# print(l1[0:4:2]) # [11, 33] 顾头不顾尾
# 5.添加元素
l1 = [11, 22, 33, 44, 55, 66]
# 5.1尾部追加元素
# l1.append('jyb')
# print(l1) # [11, 22, 33, 44, 55, 66, 'jyb']
# l1.append([111, 222, 333]) # 无论添加的元素是什么都只会当成列表的一个元素
# print(l1) # [11, 22, 33, 44, 55, 66, 'jyb', [111, 222, 333]]
# 5.2指定位置插入元素
# l1.insert(0, 'jyb')
# print(l1) # ['jyb', 11, 22, 33, 44, 55, 66]
# l1.insert(2, [111, 222]) # 无论添加的元素是什么都只会当成列表的一个元素
# print(l1) # ['jyb', 11, [111, 222], 22, 33, 44, 55, 66]
# 5.3扩展列表
# l1.extend([111, 222, 333, 444])
# print(l1)
"""
如果不让你使用extend也完成扩展列表的操作 如何实现?
for i in [111,222,333,444]:
l1.append(i)
"""
l1 = [11, 22, 33, 44, 55, 66]
# 6.删除元素
# 6.1通用的删除操作
# del l1[0]
# print(l1) # [22, 33, 44, 55, 66]
# 6.2弹出元素
# res = l1.pop(1)
# print(l1, res) # [11, 33, 44, 55, 66] 22
# 6.3删除元素
# res = l1.remove(22)
# print(l1, res) # [11, 33, 44, 55, 66] None
l1 = [11, 22, 33, 44, 55, 66]
# 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() # 默认是升序
print(l3) # [11, 22, 33, 44, 55, 77, 88, 99]
l3.sort(reverse=True) # 倒序
print(l3) # [99, 88, 77, 55, 44, 33, 22, 11]
# 字典dict
字典内元素也是无序的
user_dict = {'username': 'jyb', 'pwd': 123, 'hobby': 'read'}
1.统计长度(键值对的个数)
print(len(user_dict)) # 3
2.按键取值
print(user_dict['username']) # jyb
print(user_dict['xxx']) # 键不存在会直接报错
print(user_dict.get('username')) # jyb
print(user_dict.get('xxx')) # None 键不存在不会报错返回None
3.设置值(重点)
user_dict['username'] = 'jybNB'
'''键存在则修改'''
print(user_dict) # {'username': 'jybNB', 'pwd': 123, 'hobby': 'read'}
user_dict['age'] = 18
'''键不存在则新建'''
print(user_dict) # {'username': 'jybNB', 'pwd': 123, 'hobby': 'read', 'age': 18}
4.删除值(字典的键值对是一个整体)
res = user_dict.pop('username')
print(user_dict, res) # {'pwd': 123, 'hobby': 'read'} jyb
5.三个小方法
print(user_dict.keys()) # ['username', 'pwd', 'hobby']
print(user_dict.values()) # ['jyb', 123, 'read']
print(user_dict.items()) # [('username', 'jyb'), ('pwd', 123), ('hobby', 'read')]
# 集合(了解)
集合内元素是无序的
1.去重
集合内不允许出现重复的元素 会自动去重
2.关系运算
交叉并集
eg:共同好友 共同关注 共同点赞
f1 = {'jyb', 'tony', 'kevin', 'jack'}
f2 = {'jyb', 'tom', 'jerry', 'tony'}
# 1.求两个人共同好友
print(f1 & f2) # {'tony', 'jyb'}
# 2.求f1独有的好友
print(f1 - f2) # {'jack', 'kevin'}
# 3.求f2独有的好友
print(f2 - f1) # {'tom', 'jerry'}
# 4.求两个人所有的好友
print(f1 | f2) # {'jyb', 'jerry', 'tony', 'jack', 'tom', 'kevin'}
# 5.求两个人各自的好友
print(f1 ^ f2) # {'kevin', 'jack', 'tom', 'jerry'}
# 6.父集 子集
print(f1 > f2)
print(f1 < f2)