01-计算机基本认知与环境搭建
计算机基本认识
Python基本介绍
Python就是一门编程语言,而且是现在世界上最流行的编程语言之一。
编程语言就是人类和计算机进行交流的语言,是用来定义 计算机程序 的形式语言。
我们通过编程语言来编写程序代码,再通过语言处理程序执行向计算机发送指令,让计算机完成对应的工作。
计算机处理流程
计算机(computer)俗称电脑,是现代一种用于高速计算的电子设备,我们可以使用计算机进行数值计算,也可以进行逻辑判断,计算机还具有存储记忆信息的功能,且能够按照预定程序的运行固定操作,并自动、高速地处理信息。
一个完整的计算机系统,是由硬件系统和软件系统两大部分组成的。
硬件系统
从ENIAC(世界上第一台计算机)到当前最先进的计算机,硬件系统的设计采用的都是 冯·诺依曼体系结构。如下图:
计算机硬件三大件:
1. 运算器和控制器统称中央处理器(即CPU)
运算器
执行各种算术和逻辑运算操作的部件,即数据的加工处理。例如:加减乘除等等。
控制器
是计算机的中枢神经,分析程序规定的控制信息,并根据程序要求进行控制,协调计算机各部分组件工作及内存与外设的访问等。
寄存器
CPU中用于临时存放数据的一些小型存储区域,存放运算器中参与运算的数据和运算结果、控制器的控制指令和执行执行结果。
运算器和控制器都内置了寄存器,所以往往会说CPU由运算器和控制器这2部分组成,当然也有人说是3部分。
2. 内存储器和外存储器统称存储器(即Memory)
实现记忆功能的部件,用来存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。断电后不保留数据。
内存储器
也叫内存,或者主存,俗话就是指计算机中的内存条
外存储器
也叫外存,或者辅存。常见的外存储器有硬盘、光盘、U盘等。
实现记忆功能的部件,用来存储程序、数据和各种信号、命令等信息,并在需要时提供这些信息。断电后不保留数据。
3. 输入设备和输出设备统称输入输出设备(即IO设备)
输入设备(InputDevice): 实现将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。
输出设备(OutputDevice): 实现将计算机处理后生成的中间结果或最后结果(各种数据符号及文字或各种控制信号等信息)输出出来。
软件系统
按照冯·诺依曼体系结构存储程序的原理,计算机的工作流程大致如下:
- 用户打开应用程序,应用程序开始执行;
- 操作系统将程序内容和相关数据送入计算机的内存;
- CPU根据程序内容从内存中读取指令;
- CPU分析、处理指令,并为取下一条指令做准备;
- 取下一条指令并分析、处理,如此重复操作,直至执行完程序中全部指令,最后将计算的结果放入指令指定的地址寄存器中。
Python应用场景
python的优缺点
优点
- 简单易学。
- 免费、开源、可移植性强、可扩展性强。
- 完善的生态、编程行业中经常称赞python开发人员为调包侠。
- 既支持面向过程的编程也支持面向对象的编程,函数是一等公民。
- 解释型语言,也支持代码编译,但是明明靠开发效率著称,就没有必要和C/C++抢饭碗了,当然也抢不过。
缺点
- 执行效率慢,这是因为python是动态类型语言,解释型语言的通病。
Python应用场景
- Web应用开发、游戏GM系统、web渗透系统、嗅探器、端口扫描仪
- 操作系统管理、服务器自动化运维、自动化测试开发
- 服务器软件、网络爬虫
- 科学计算、数据分析、人工智能
- 桌面软件、游戏开发
Python市场份额
python环境搭建
Python解释器安装
python目前最新版本的解释器是3.10版本,但是在工作中一般常用的版本有2.7,3.5,3.8,3.9版本。
下载地址:https://www.python.org/ftp/python/3.9.9/python-3.9.9-amd64.exe
安装完成以后,打开 Windows 的命令行程序(命令提示符),在窗口中输入python
命令(注意字母p
是小写的),如果出现 Python 的版本信息,并看到命令提示符>>>
,就说明安装成功了,如下图所示。
在地址栏上面输入 cmd,然后回车Enter
接着在黑窗口(终端,Terminal),输入python,回车
有了上面的效果,则表示我们已经成功在当前操作系统下面安装了一个python解释器。有了解释器以后,我们接下来就可以学习编写python程序,把我们所编写的代码让计算机进行执行了。
运行Python程序
- Python 源程序就是一个特殊格式的文本文件,可以使用任意文本编辑软件做
Python
的开发工具。 - Python 程序的 文件扩展名 通常都是
.py
。
在win10系统中设置显示文件扩展名如下:
在保存源代码的目录(强烈建议大家把自己的源代码单独整理成一个目录):
使用鼠标右键,点击main.py,基于记事本或者notepad++。
notepad++是一个简单易用的记事本软件,用于编写普通文本的,也可以用于编写开发的源代码。
在main.py,编写代码(注意:务必使用英文输入法):
print("hello world")
print("hello python")
编写完成以后,使用键盘的快捷键:Ctrl+S,保存文本。接着在windows目录地址栏上输入cmd,Enter回车键,在黑窗口中输入以下命令执行 main.py程序,执行如下:
python main.py
错误python程序示范
1.编写python代码,务必保证使用英文输入法编写,否则采用中文,会导致程序出错!
2.错误的缩进,不能tab键把代码缩进处理。
3.多个指令一般分多行编写,不能挤在一行。
4.尽量不要使用其他的文件格式,也要注意编写过程中的文件后缀扩展名是否正确了!!
执行 Python 程序的方式
文本模式
就是上面我们使用的方式。
- 先编写Python代码 保存在py文件 中,使用python解释器对文件逐行解释执行
- 在终端中输入解释器名,再输入要执行的文件名
效果如下:
python main.py
交互模式
- 直接在终端中运行解释器,后面不输入要执行的文件名
- 在 Python 交互模式 中 边输入边执行 Python代码,会立即看到程序执行结果
交互模式,仅仅适用于测试简短的python代码,或者简单的运算。因为这种模式下的python代码不能保存,不方便调试错误,不适合运行太大的程序。
退出交互模式:
# 方式1,执行退出函数
exit()
# 方式2,使用快捷键,适用于Mac或者Linux系统下
ctrl+c或者ctrl+z
当然,在开发中大多数时间里面,python开发人员都是采用文本模式来开发Python代码,同时,编写Python代码的工具也不是上面的普通工具,而是集成了很多功能的集成开发环境(IDE
,Integrated Development Environment)。
集成开发环境,是一种强大的代码编辑软件,里面提供了开发人员在日常开发中基本使用到的所有工具和操作。各个语言里面都有各自的比较流行的IDE工具,其中Python开发一般使用的就是Pycharm或者vscode。
PyCharm是Python 的一款非常优秀的集成开发环境,除了具有一般 IDE 所必备功能外,还可以在多种操作系统(Windows
、Linux
、macOS
)下使用。特别是适合开发大型项目。
- 一个项目通常会包含 很多源文件
- 每个 源文件 的代码行数是有限的,通常在几百行之内
- 每个 源文件 各司其职,共同完成复杂的业务功能
Pycharm基本使用
下载地址:https://www.jetbrains.com/pycharm/download/
安装过程,如下:
安装完成以后首次打开效果:
直接点选OK,进入下一步。
如果选择的是账号激活,则会自动打开浏览器到官网登录的。
激活完成以后,界面如下:
上面直接选择New Project即可。
上面的操作就创建一个项目了。
新建/打开一个 Python 项目
通常一个项目就具有一个独立的保管代码的目录,用于保存所有与项目有关的文件(python源代码文件、图片、视频、音频等资源文件)
项目目录的命名规则
- 工作中项目名多以 大驼峰命名法 进行命名,如 FirstDemo,每一个单词的首字母大写。
- py文件在命名时建议只使用 小写字母、数字 和 下划线 。
- 文件名不要以数字开始
- 通过 欢迎界面 或者菜单 File / New Project 可以再次新建另一个新项目目录
- 项目目录文件导航区域 能够 浏览/定位/打开 项目文件
- 代码编辑区域 能够 编辑 当前打开的文件中的内容
- 系统终端 能够执行和输出程序内容、跟踪调试代码的执行
项目配置
打开的目录如果不是由 PyCharm
建立的项目目录,有的时候操作系统中安装了多个版本的Python解释器时,使用的解释器版本可能是其他的版本,这时候就需要单独设置指定的解释器版本
通过 File / Settings... 可以打开设置窗口,如下图所示:
设置 PyCharm 的字体显示
快速执行Python程序
快捷键列表
快捷键 | 作用 |
---|---|
Ctrl + / | 单行注释 |
Ctrl + Shift + / | 多行注释 |
Ctrl + D | 复制当前光标所在行 |
Ctrl + X | 删除当前光标所在行 |
Ctrl + Alt + L | 格式化代码 |
Ctrl + Shift + R | 全局查找 |
Ctrl + Alt + left/right | 返回至上次浏览的位置 |
Ctrl + W | 快速选中代码 |
Ctrl + R | 替换 |
python基础语法
变量
变量,可以变化的标识符,实际就是类似数学的未知数一样的单词,这个单词的作用可以代表程序中的数据进行使用。一般开发中,标记符有很多中,而变量属于其中一种。
x = "李白:床前明月光,疑是地上霜。.......,低头思故乡!"
print(x)
print(x)
print(x)
print(x)
上面的x就是一个程序中使用的变量。后面所有的代码只要遇到上面提前预设值的x都会直接提取对应的右边的实际内容。这样的话,就可以做到一改全改了。
命名规范
简单地理解,变量就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是为了方便程序中的数据被方便地的调用而设置的。Python中变量名不是随意起的,而是要遵守一定的命名规则。
- 变量是由大小写字母(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字开头。
- 变量不能和 Python 中的关键字或保留字相同。
- 变量中不能包含特殊字符的,如:空格、@、% 以及 $ 等。
- 变量中的字母是严格区分大小写,开发中一般称之为对大小写敏感。
- 以下划线开头的标识符有特殊含义,变量不能随便以下划线开头。
- 允许使用汉字作为标识符(但是强烈不推荐使用,因为并不通用而且在部分计算机系统中不识别中文)
关键字与保留字
and | as | assert | break | class | continue |
---|---|---|---|---|---|
def | del | elif | else | except | finally |
for | from | False | global | if | import |
in | is | lambda | nonlocal | not | None |
or | pass | raise | return | try | True |
while | with | yield |
执行python代码,也可以查看关键字与保留字
import keyword
print(keyword.kwlist)
上面提到的,Python的变量是区分大小写的,关键字与保留字也不例外,所以if 是保留字,但 IF 就不是了。
声明变量
变量是一段有名字的连续存储空间。我们通过定义变量来申请并命名这样的存储空间,并通过变量的名字来使用这段存储空间。在编程语言中,将数据放入变量的过程叫做赋值(Assignment)。Python 使用等号=
作为赋值运算符,具体格式为:
变量名 = 数据
注意:所谓的赋值,其实就是"代表"的意思。
例如:
x = 10
y = "hi, libai"
z = True
x = "hello world"
注释
注释就类似文章中的注解、旁白。其实就是对源代码的解释和说明,其目的是让其他开发人员能更加轻松地理解代码的作用。
注释是编写程序时,写程序的作者给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。一般情况下,合理的代码注释应该占源代码的 1/3 左右。
注释只是为了提高公认阅读,不会被解释器执行。
Python 支持两种写法的注释,分别是单行注释和多行注释。
# 单行注释,后面一整行不会被解释器执行成代码
"""
这是一个多行注释
三引号里面的任何内容不会被解释器执行
"""
格式
语句分隔符
就像我们写作文一样,逗号、句号等语句分隔符是非常重要的,程序也一样,要想让解释器能读懂,语句和语句之间一定要有分隔符。在C、Java等语言的语法中规定,必须以分号作为语句结束的标识。Python也支持分号,同样用于一条语句的结束标识。但在Python中分号的作用已经不像C、Java中那么重要了,Python中的分号可以省略,主要通过换行来识别语句的结束。
缩进
和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用冒号( : )和代码缩进和来区分代码块之间的层次。在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。
规范
Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则:
1、不要在行尾添加分号,也不要用分号将两条命令放在同一行
2、通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。
3、使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。
python基本数据类型
所谓的数据,其实就是需要保存到计算机进行存储的描述信息。因为数据的作用在使用过程中会有不同的使用方式或者具有不同的功能,所以python会对数据进行划分分类,也就是划分不同的类型。在编程中给不同的数据声明不同的类似,可以方便python解释器很好地去存储和调用这些数据。
int
在python中整数都属于整型,不同于其他语言,例如C语言会根据整数的大小将整型分类为short、int、long、long long 四种类型,python只有一种整型,即int
类型,无论整型数字多大多小都属于int
。
x = 100
print(type(x)) # <class 'int'> integer
进制转换
说到整型,就不得不提到整型数字之间进制。
# 十六进制
print(0x11)
print(0x111)
# 二进制
print(0b101)
print(0B101)
# 八进制
print(0o12)
print(0o23)
# 十进制转换为二进制
print(bin(3))
# 十进制转换为十六进制
print(hex(19))
# 十进制转换为八进制
print(oct(10))
float
在python中小数都属于浮点型(float
),有两种表现形式
# 小数点形式(常用)
f = 3.14
print(f) # 3.14
print(type(f)) # <class 'float'>
# 指数形式: aEn 或 aen
'''
3.2E5 = 3.2×105,其中 3.2 是尾数,5 是指数。
2.7E-3 = 2.7×10-2,其中 2.7 是尾数,-3 是指数。
0.2E8 = 0.2×107,其中 0.2 是尾数,8 是指数。
'''
f1 = 3.2E5
print(f1) # 320000.0
print(type(f1)) # <class 'float'>
f2 = 3.2E-5
print(f2) # 3.2e-05
print(type(f2)) # <class 'float'>
bool
布尔型(Boolean)是一种数据的类型,这种类型只有两种值,即"真"与"假"。在python中用 bool
表示布尔类型,“真"用关键字True
表示,有成立的意思;“假"用False
表示,有不成立的意思。
print(4 == 2) # False
print(5 > 1) # True
name = "jiang"
print(name == "moluo") # False
print(1 == "1") # False
不光上面代码语句的结果是布尔值,单独一个数据没有进行计算也可以都有自己的布尔值,这就涉及到布尔的零值。
# 任意数据类型都一个具体值的布尔值为False,我们称为零值。该类型的其他值的布尔值皆为True。
print(bool("")) # 字符串的零值 “”
print(bool(0)) # 整型的零值 0
print(bool("0"))
print(bool("-1"))
print(bool("moluo"))
print(bool(-1))
print(bool(0.1))
str
字符串是由零个或多个字符组成的有限序列。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有字符。
在python中字符串是通过单引号''
或者双引号""
标识的。
s1 = "hi moluo"
print(s1)
s2 = ""
print(s2)
s3 = 'Python是最棒的编程语言!'
print(s3)
强调:Python 字符串中的双引号和单引号没有任何区别!
字符串的转义符
转义字符 | 说明 |
---|---|
\n |
换行符,将光标位置移到下一行开头。 |
\r |
回车符,将光标位置移到本行开头。 |
\t |
水平制表符,也即 Tab 键,一般相当于四个空格。 |
\b |
退格(Backspace),将光标位置移到前一列。 |
\\ |
反斜线 |
\' |
单引号 |
\" |
双引号 |
\ |
在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
代码:
s1 = "hi libai\nhi,moluo"
print(s1)
s2 = 'I\'m moluo'
print(s2)
s3 = "D:\\nythonProject\\nenv\\Scripts\\python.exe"
print(s3)
长字符串
也叫文本字符串。就是三个单引号或者三个双引号圈住的内容,实际上也是字符串。
但是,开发中基本没有人这么写。开发中也不建议使用这样的字符串!!!
s = """
s = "hi moluo\\nhi,python"
I'm moluo
这是一个python解释器路径:"D:\\nythonProject\\nenv\Scripts\python.exe"
长字符串中放置单引号或者双引号不会导致解析错误
"""
print(s)
格式化输出
之前讲到过 print() 函数的用法,这只是最简单最初级的形式,print() 还有很多高级的玩法,比如格式化输出。
# 允许用户在终端下输入自己的账号和密码
username = input("请输入您的登录账号:")
password = input("请输入您的登录密码:")
# 格式化输出的字符串中存在多个变量,则需要在 % 后面把对应的变量使用小括号括起来。
print("您的账号:%s,登录密码:%s" % (username, password))
year = 2022
month = 1
date = 7
# %02d 以整数输出,如果不足2位整数的,左边加0补充进去
print("%d-%02d-%02d" % (year, month, date))
year = 2022
month = 10
date = 17
print("%d-%02d-%02d" % (year, month, date))
在 print() 函数中,由引号包围的是格式化字符串,它相当于一个字符串模板,可以放置一些转换说明符(占位符)。本例的格式化字符串中包含一个%s
和%d
说明符,它最终会被后面的name和age 变量的值所替代。中间的%
是一个分隔符,它前面是格式化字符串,后面是要输出的表达式。
print() 函数使用以%
开头的转换说明符对各种类型的数据进行格式化输出,具体请看下表。
转换说明符 | 解释 |
---|---|
%d、%i | 转换为带符号的十进制整数 |
%o | 转换为带符号的八进制整数 |
%x、%X | 转换为带符号的十六进制整数 |
%e | 转化为科学计数法表示的浮点数(e 小写) |
%E | 转化为科学计数法表示的浮点数(E 大写) |
%f、%F | 转化为十进制浮点数 |
%g | 智能选择使用 %f 或 %e 格式 |
%G | 智能选择使用 %F 或 %E 格式 |
%c | 格式化字符及其 ASCII 码 |
%r | 使用 repr() 函数将表达式转换为字符串 |
%s | 使用 str() 函数将表达式转换为字符串 |