Python基础知识
计算机基本概述
1.0计算机基本概念
1.1计算机是什么?
● 计算机(computer)俗称电脑,是现代⼀种⽤于⾼速计算的电⼦计算机器
● 特点 : 数值计算 逻辑计算 存储记忆功能
● 总结 : 能够按照程序运⾏、⾃动、⾼速处理数据的现代化智能电⼦设备
1.2计算的组成?
● 硬件:⿏标 键盘 显示器 CPU 硬盘… 看的⻅摸的着.
● 软件:PyCharm QQ 浏览器 英雄联盟… 看不⻅摸不着
2.计算机的语言
2.1计算语言的基本概念
● 概念 :计算机语⾔(Computer Language)指⽤于⼈与计算机之间通讯的
语⾔。
● 总结:能够按照程序运⾏、⾃动、⾼速处理数据的现代化智能电⼦设备
2.2计算机语言的发展
● 机器语⾔ --> 汇编语⾔ --> ⾼级计算机语⾔
● 机器语⾔:最初的机器语⾔都是由0 和 1组成的⼆进制数,说⽩了⼆进制就是机
器语⾔组成的基础
● 汇编语⾔:汇编语⾔是在机器语⾔基础之上发展的,它⽤了⼀些简单的字⺟和符号串来代替⼆进制串,这样就提⾼了语⾔的记忆性和识别性
● ⾼级计算机语⾔: 就是⼀系列指令的集合 例如: JAVA C C++ Python
2.3 解释性语言和编译性语言的区别
● 编译型语⾔ 代表语⾔ C
○ x(源码) --编译–> y(编译后的机器码) 执⾏速度特别快 跨平台性⽐较差
●解释型语⾔ 代表语⾔ Python 执⾏速度⽐较慢 跨平台性⽐较好
○ x(源码)–解释器–> 解释执⾏
3.交互方式
3.1交互方式的种类
● 命令⾏的交互⽅式 (Text-based User Interface) TUI
● 图形界⾯化的交互⽅式 Graphical User Interfac) GUI
3.2文本交互模式打开的方式(win)
• win键 + R --> CMD --> 回车
• 命令行结构
• Microsoft Windows[版本 6.1.7601] —> 版本
• 版权所有© 2009 Microsoft Corporation。保留所有权利 —> 版权声明
• C:\User\Administrator>
• C: —>所在磁盘的根目录 (可以通过 X: 切换盘符)
• \User\Administrato —> 所在磁盘路径,当前所在的文件夹
• > —> 命令提示符 (在后面可以直接输入指令)
3.3DOS命令
4.文本文件和字符集
4.1文本文件
• 文本分为两种 : 一种 纯文本 一种 富文本
• 纯文本只能保存单一的文本内容,无法保存内容无关的东西(例如 txt文本文档)
• 富文本可以保存文本以外的东西(例如 有道笔记)
• 纯文本在计算机底层也会转换为二进制保存
• 将字符转换为二进制码的过程,我们称之为编码 encode()
• 将二进制码转换成字符的过程,我们称之为解码 decode()
4.2常见的字符集
• ASCII 美国人编码 使用7位来对美国常用的字符进行编码 包含128个字符
• ISO-8859-1 欧洲的编码 使用8位来编码 包含256个字符
• GBK 中国人编码(国标码)
• Unicode 万国码 包含世界上所有语言和字符 编写程序一般都会使用Unicode 编码
• Unicode 编码有多种实现 UTF-8 UTF-16 UTF-32
5.进制
5.1进制之间的转换
• 十进制–>二进制 原理: 对十进制数进行除2运算
• 二进制 – > 十进制 原理:二进制乘以2(次幂)的过程
• 进制越大表现形式越短,之所以出现其他进制就是为了更方便的表示数据
5.2进制的计数
• 十进制
• 十进制满十进一 十进制一共有10个数字
• 计数 : 0 1 2 3 4 5 6 7 8 9 10 11 12 …19 20
• 二进制
• 二进制满二进一 二进制一共有2个数字 0 1
• 计数 : 0 1 10 11 100 101 110 111 1000…
• 八进制
• 八进制满八进一 八进制一共有8个数字
• 计数 : 0 1 2 3 4 5 6 7 10 11 … 17 20 21…27 30
• 十六进制
• 十六进制满十六进位 十六进制的数字 引入了 a b c d e f 表示 10 11 12 13 14 15
• 计数 : 0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 13 … 1a 1b 1c 1d 1e 1f 20 21 22 23 24…2a 2b 2c 2d 2e 2f 30 31 32 33 34… 3a 3b…
5.3数据间的换算
• bit是计算机中最小的单位
• byte是我们最小的可操作的单位
• 8bit = 1byte(字节)
• 1024byte = 1KB(千字节)
• 1024KB = 1MB(兆字节)
• 1024MB = 1GB(吉字节)
• 1024GB = 1TB太字节)
6.环境变量
6.1基本概念
• 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等
• 环境变量操作
• 1.查看环境变量
• 右键计算机(此电脑),选择属性
• 系统界面左侧选择 高级系统设置
• 选择环境变量
• 2. 添加环境变量
• 通过新建按钮添加环境变量
• 环境变量可以有多个值 , 值与值之间用 英文分号隔开
• 3. 修改环境变量
• 通过编辑按钮来修改环境变量
• 4. 删除环境变量
• 通过删除按钮来删除环境变量
6.2path环境变量
• path环境变量 保存的是一个一个的路径
• 当我们在命令行中输入一个命令,系统会先在当前目录下找,如果有就直接打开
• 如果没有则会去path环境变量的路径去找,直到找到为止。没找到则会报错
• 我们可以将一些经常要访问的文件或程序的路径添加到环境变量当中。这样我们就可以在任意位置来访问这些文件了
• 注意事项:
• path环境变量不区分大小写 path Path PATH
• 多个路径之间用 ; 隔开
Python 要点
1. Python 语言
1.1 Python 语言的基本概念
• Python 是一种极少数能兼具 简单 与 功能强大 的编程语言。你将惊异于发现你正在使用的这门编程语言是如此简单,它专注于如何解决问题,而非拘泥于语法与结构
• 官方对 Python 的介绍如下:
• Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。Python 简洁的语法与动态输入之特性,加之其解释性语言的本质,使得它成为一种在多种领域与绝大多数平台都能进行脚本编写与应用快速开发工作的理想语言
• Python 的创造者吉多·范罗苏姆(Guido van Rossum)采用 BBC 电视节目《蒙提·派森的飞行马戏团(Monty Python’s Flying Circus,一译巨蟒剧团)》的名字来为这门编程语言命名
1.2 Python 的特色
• 简单
• 易于学习
• 自由且开放
• 跨平台
• 可嵌入性
• 丰富的库
1.3 Python 的应用发展
• Python的应用
○ 常规软件开发
○ 科学计算
○ 自动化运维
○ 自动化测试
○ WEB开发
○ 网络爬虫
○ 数据分析
○ 人工智能
1.4 Python之禅
(输入 import this)
美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
2.Python 环境搭建
2.1 Python的解释器
• 环境搭建就是安装Python的解释器
• Python的解释器分类:
• CPython(官方我们用的就是这个版本) 用c语言编写的Python解释器
• PyPy 用Python语言编写的Python解释器
• JPython 用Java编写的Python解释器
2.2 搭建Python环境
官网 :官网链接
下载安装包
安装成功
2.3 Python的交互模式
• win键 + R --> CMD --> 回车 --> 输入Python
• 命令行结构
• Python 3. 6. 5 … —> 版本
• Type “help”,“copyright”…—> 版权声明
• >>> —> 命令提示符 (在后面可以直接输入指令)
2.4 pip工具的使用
pip介绍
我们都知道python有很多的第三方库或者说是模块。这些库针对不同的应用,发挥不同的作用。我们在实际的项目中肯定会用到这些模块。那如何将这些模块导入到自己的项目中呢?
Python官方的PyPi仓库为我们提供了一个统一的代码托管仓库,所有的第三方库,甚至你自己写的开源模块,都可以发布到这里,让全世界的人分享下载 。
python有两个著名的包管理工具easy_install和pip。在python 2中easy_install是默认安装的,而pip需要我们手动安装。随着Python版本的提高,easy_install已经逐渐被淘汰,但是一些比较老的第三方库,在现在仍然只能通过easy_install进行安装。目前,pip已经成为主流的安装工具,自Python 2 >=2.7.9或者Python 3.4以后默认都安装有pip
pip使用
在命令行下,输入pip,回车可以看到帮助说明:
查看pip版本
pip -V
pip --version
普通安装
pip install requests
指定版本安装
pip install robotframework==2.8.7
卸载已安装的库
pip uninstall requests
pip install SomePackage
pip install SomePackage==1.0.5 # 指定版本
pip install 'SomePackage>=1.0.6' # 最小版本
升级指定的包,通过使用==, >=, <=, >, < 来指定一个版本号。
列出已经安装的库
pip list
显示所安装包的信息
pip show package
使用wheel文件安装
除了使用上面的方式联网进行安装外,还可以将安装包也就是wheel格式的文件,下载到本地,然后使用pip进行安装。比如我在PYPI上提前下载的pillow库的wheel文件,后缀名为whl
地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
可以使用 pip install pillow-4.2xxxxxxx.whl 的方式离线进行安装
• 第一步 安装 wheel
• 第二步 找到下载的whl文件的目录进行安装(以桌面为例)
• 第三步 执行命令安装
3. Pycharm的安装和配置
3.1 Pycharm的安装
3.2 PyCharm的简单配置
• 1、主题修改 File–settings–apperance–theme
• 2、代码字体修改 File–settings–Editor-Font
• 3、关闭更新 File–settings—apperance—System Settings —Updates — Automatically check updates for 取消打钩
• 4、快捷键修改 File–settings—apperance-- Keymap 选择自己习惯的快捷键方式
• 5、自动导包 File–settings—apperance–General —Auto Import 打钩
• 6、进制打开上次的工程 File–settings—apperance—System Settings —Reopen last project startup
• 7、修改新建文件文件头 File–settings–Editor—Code Style — File and Code Templates — Python Script
• #!/usr/bin/env python
• # -- coding: utf-8 --
• # @Time : ${DATE} ${TIME}
• # @Author : Jerry
• # @File : ${NAME}.py
• # @Software: ${PRODUCT_NAME}
• 8、修改字体编码 File–settings–Editor—Code Style — File Encoding — Project Encoding
Python语法
1. 基础数据类型
1.1表达式
• 表达式:就是类似于一个数学公式的东西
• 表达式特点:
• 表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响
• 如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
1.2 语句
语句:在程序中一般用语句完成某种功能
print() :输出
input(): 接受来自外界的输入,且有阻塞的功能
代码块:执行的话,都会执行,不执行的话一个都不会执行。
1.3 程序
程序:程序就是由一条一条的语句和一条一条的表达式构成的。
1.4 函数
函数:函数就是一种语句,函数专门用来完成特定的功能
函数形如xxx()
内置函数:如 print()
自定义函数:如def xxx():
参数:()中的内容就是函数的参数,可以有多个参数,但是参数之间要用逗号隔开
返回值:
2. 标识符
2.1 Python语言的组成
关键字、标识符、注释、变量和数值、运算符、语句、函数、序列、类
关键字:具有一些特殊功能的标识符(我们自己不能使用)
标识符:开发人员在程序中自定义的一些符号和名称。标识符是自己定义的,如变量名 、函数名等
命名方法:
• 驼峰命名法
• 小驼峰式命名法: 第一个单词以小写字母开始;第二个单词的首字母大写,例如:myName、aDog
• 大驼峰式命名法: 每一个单字的首字母都采用大写字母,例如:FirstName、LastName
• 下划线命名法
• 不过在程序员中还有一种命名法比较流行,就是用下划线“_”来连接所有的单词,比如 get_url buffer_size
2.2 基本数据类型
整数(int):1-100 超过最大值:出现内存溢出的现象
小数(float):如1.2、2.004
布尔值和空值:
布尔值只有两个值:True, False 逻辑判断
True其实也相当于一个整形 1
False相当于0
None就是空值,表示不存在
2.3 变量
变量:就是计算机内存中的一块区域,变量给数据起了个名字
2.4 字符串
字符串:用一对单引号或者双引号包裹的内容就是字符串
是由数字、字母、下划线组成的一串字符
• 注意
• 单引号或双引号不能混合使用
• Python中用一对双引号或者一对单引号包裹的内容就是字符串
转义字符:
****表示后面紧跟着的这个字符就是本身字符的意思,不做其他使用
\t 表示四个空格的位置,一个tab的位置,称呼为制表符
\n表示换行符
\ 表示后面的反斜杠就是本身的意思
**r’’**表示是原始字符串,表示引号中的内容没有其他意思,就是本身字符
2.5 长字符串
长字符串 又叫做文档字符串 我们使用三重引号来表示一个长字符串’’’ ‘’’
三重引号可以换行,并且会保留字符串中的格式
2.6 格式化字符串
• 第一种格式化字符串 拼串
• 第二种格式化字符串 参数传递
• 第三种格式化字符串 占位符
• %s 字符串占位
• %f 浮点数占位
• %d 整数占位
• 第四种格式化字符串 f’{变量}’
• str.format ()
2.7 字符串的操作
• len() 字符串的长度
• max() 最大值
• min() 最小值
• split()分割字符串
• join()拼接字符串
• find()查找字符串:返回的是一个索引(index)值
• replace() 替换字符串
• partition() 把字符串分割为三部分,返回的是一个元组,里面的数据分成三部分。
• 去空格
• s.strip() 左右两边去空格
• s.lstrip() 去左边空格
• s.rstrip() 去右边空格
• 字符串大小写
• s.upper() 全部大写
• s.lower() 全部小写
• s.isupper() 判断是不是大写
• s.islower() 判断是不是小写
2.8 拓展
切片:取头不取尾
2.9 作业
1,a,b = 6, 8 我想让a=8 b=6我该怎么办?用2种方式实现
a, b = 6, 8
a, b = b, a
print(a, b)
c = a
a = b
b = c
print(a, b)
2, 完成字符串的逆序以及统计
• 设计一个程序,要求只能输入长度低于31的字符串,否则提示用户重新输入
• 打印出字符串长度
• 使用切片逆序打印出字符串
str1 = input('请输入一个字符串:')
num = len(str1) #统计字符串长度
if 0 < num < 31:
print('打印出字符串长度为:', num)
str2 = f'逆序打印出字符串{str1[::-1]}'
print(str2)
else:
print('请重新输入:')
3, 要求从键盘输入用户名和密码,校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入
• 用户名长度6-20,用户名必须以字母开头
• 密码长度至少6位,不能为纯数字,不能有空格
name = input("请输入用户名(长度6--20):")
password = input("请输入密码:")
for i in password:
if i == " ":
# 判断密码是否有空格
print('密码输入不能有空格')
break
else:
if not password.isdigit():
if name[0].isalpha():
# 必须字母开头,如果用户名开头为字母,执行后面的程序
if 6 <= len(name) <= 20:
# 用户名长度6-20
print("输入合格!")
print(f'用户名为{name},密码是{password}')
else:
print("输入的用户名长度没有在6-20范围之内,请重新输入!")
else:
print("用户名必须以字母开头")
else:
print('密码不能为纯数字,请重新输入')
3.运算符
3.1 运算符的概念
概念:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”
3.2 运算符的分类
算术运算符
赋值运算符
比较运算符(关系运算符)
逻辑运算符
条件运算符(三元运算符)
3.3 算数运算符
加法运算符 表现形式 +
# 加法运算
a = 1 + 2
a = 'i' + ' ' + 'love' + ' ' + 'you'
print(a)
减法运算符 表现形式 -
# 减法运算
a = 3 - 1
# 字符串是没有减法运算的
b = '66' - '6'
print(b)
乘法运算符 表现形式 *
# 乘法运算
a = 2 * 3
# 字符串只能进行和int类型的乘法运算
b = 'a' * 2
b = 'a' * 'b'
print(b)
除法运算符 表现形式 /
# 除法运算
a = 6 / 2
# 字符串没有除法运算
b = 'aa' / 2
print(b)
// 整除,只会保留计算后的整数位,总会返回一个整型
# 整除
a = 6 // 4
print(a)
% 取模,求两个数相除的余数
# 取余
a = 6 % 4
print(a)
幂运算,求一个值的几次幂
# 幂运算
a = 3 ** 2
print(a)
开平方
a = 25 ** 0.5
print(a)
3.4 赋值运算符
赋值运算符的特殊写法 x = x + 3 其实是和 x += 3 是一样的
• += (x+= 3 相当于 x = x + 3 )
• -= (x -= 3 相当于 x= x - 3 )
• *= (x = 3 相当于 x = x 3 )
• **= (x **= 3 相当于 x = x ** 3 )
• /= (x /= 3 相当于 x = x/ 3 )
• //= (x //= 3 相当于 x = x // 3 )
• %= (x %= 3 相当于 x= x % 3
x = 1
# x = x + 1
# print(x)
x += 1
print(x)
3.5 比较运算符
• 比较运算符用来比较两个值之间的关系,总会返回一个布尔值.如果关系成立,返回True,否则返回False
• > 比较左侧值是否大于右侧值
# 大小比较,成立就位True,不成立就位False
print(3 > 2)
# 特殊比较
result = '2' > '1'
result = '2' > '11'
result = 'a' > 'b'
result = '2' > 'a'
result = 'ab' > 'bb'
print(result)
ascii 码对照表
• >= 比较左侧的值是否大于或等于右侧的值
• < 比较左侧值是否小于右侧值
• <= 比较左侧的值是否小于或等于右侧的值
• 特殊的比较方式
• == 比较的是两个对象的value值是否相等
• != 比较的是两个对象的value值是否不相等
• is 比较两个对象是否是同一个对象,比较的是对象的id
• is not 比较两个对象是否不是同一个对象,比较的是对象的id
3.6 逻辑运算符
逻辑非 可以对符号右侧的值进行非运算 not
0空串 None 还有一些表示空性的值会转换为False ,其余的都为True
str1 = ''
list1 = []
print(not str1)
a = 1
print(not a)
a = None
print(not a)
a = 0
print(not a)
and 逻辑与 可以对符号两侧进行与计算
只有在符号两侧的值都为True的时候,才会返回True,只要一个为False,就会返回False
result = True and True
result = True and False
result = False and False
result = False and True
print(result)
或运算 or
两个值中,如果一个值为True,就会返回True
result = False or True
result = False or False
result = True or False
result = True or True
print(result)
与运算规则就是找False, 如果第一个值是False, 则不看第二个值,直接返回第一个值,否则返回第二个值
非布尔值的与或运算
result = 1 and 2 # 2
result = 1 and 0 # 0
result = 0 and 2 # 0
result = None and 0 # None
print(result)
或运算规则是找True, 如果第一个值是True, 则不看第二个值,直接返回第一个值,否则返回第二个值
result = 1 or 2 # 1
result = 0 or 1 # 1
print(result)
3.7 条件运算符(三元运算符)
条件运算符在执行时,会先对条件表达式进行求值判断
如果判断结果为True,则执行语句1,并返回执行结果
如果判断结果为False,则执行语句2,并返回执行结果
语法: 语句1 if 条件表达式 else 语句2
a = 20
b = 10
s = (a if a > b else b)
print(s)
3.8 运算符的优先级
a = 2 + 3 * 4
b = (2 or 3) and 4
# or 和and的优先级一样高 从左到右执行 结果 4
# or比and的优先级高, 从左往右执行 结果 4
# and比or优先级高 结果 2
print(b)
3.9 作业
1,以4种格式化字符串的方式来实现 521 xxx 嫁给我好吗?
a = '521'
b = 'xxx'
c = '嫁给我好吗'
print(a,b,c)
a = '521 xxx 嫁给我好吗?'
print(a)
a = '521'
b = 'xxx'
c = '嫁给我好吗?'
print(f'{a}', f'{b}',f'{c}')
2,现在有a b c三个变量,三个变量中分别保存有三个数值,请通过条件运算符获取三个值中的最大值
a = 10
b = 20
c = 30
d = a if a > b else b
e = d if d > c else c
print(e)
s = a if a > b and a > c else b if b > c else c
print(s)
4. 条件判断(if语句)
4.1 if语句
• 执行的流程:
• if语句在执行时,会先对条件表达式进行求值判断,
• 如果为True,则执行if后的语句
• 如果为False,则不执行
• 语法:if 条件表达式 :
代码块
• 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
• 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
• 代码块就是一种为代码分组的机制
str1 = int(input('请输入0,1,2三个数中间的一个:'))
if str1 == 0:
print(123)
if str1 == 1:
print('hello')
if str1 == 2:
print('hahaha')
语法: if 条件判断:(:号一定要写)
代码块
4.2 input函数
该函数用来获取用户的输入
input()调用后,程序会立即暂停,等待用户输入
用户输入完内容以后,点击回车程序才会继续向下执行
用户输入完成以后,其所输入的的内容会以返回值得形式返回
4.3 if-else语句
• 语法:
if 条件表达式 :
代码块
else :
代码块
• 执行流程:
• if-else语句在执行时,先对if后的条件表达式进行求值判断
• 如果为True,则执行if后的代码块
• 如果为False,则执行else后的代码块)
str1 = int(input('请输入0,1三个数中间的一个:'))
if str1 == 0:
print(123)
else:
print('hello')
4.4 if-elif-else 语句
• 语法:
if 条件表达式 :
代码块
elif 条件表达式 :
代码块
elif 条件表达式 :
代码块
…
else :
代码块
• 执行流程:
• if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
• 如果表达式的结果为True,则执行当前代码块,然后语句结束
• 如果表达式的结果为False,则继续向下判断,直到找到True为止
• 如果所有的表达式都是False,则执行else后的代码块
str1 = int(input('请输入数字:'))
if str1 == 0:
print