更于2022.7.25
不懂的问题评论区问,或者私聊我
配置初级环境
为什么要配置环境?每一门编程语言都需要环境,环境配置好后才能进行编程
用浏览器访问https://www.python.org/,点击Download,Windows。
版本号的选择:
python在3.9时官方仅支持win10以上,win10以下安装会出现缺少dll的情况。
所以,win10以下就使用3.9以下的版本。
同时,新旧版本共存是有必要的,有时想试试新的版本,但又怕出现什么bug,建议win10以上安装python3.7和最新版。
打开安装包,把左下角的Add to PATH复选框勾上(这一点很重要),点击Install Now。
如果你不是第一次安装python,而是更新python,可以选择Upgrade Now.
安装完毕后,在cmd中输入python3,如果进入界面,说明你成功了。
我的第一个程序——Hello,World!
在cmd中输入python,进入python后,输入以下代码:
如果你安装了多个python,就在python后面加上版本号,如:
python3 python3.7 python3.7.3
print("Hello,World!")
回车,发现python出现了一行文字:Hello,World!
好了,恭喜你成功入门,接下来我们要进行配置高级环境
配置高级坏境
我不太喜欢python自带的命令行,ipython与其相比,更智能。
打开cmd(注意不是python),输入以下命令:
pip install ipython -i https://pypi.tuna.tsinghua.edu.cn/simple
等待安装完毕,在cmd中输入ipython,就能看到input和output的标识符:
开发大型项目,要代码极速补全、debug等功能的开发环境,我简单介绍以下几款环境:
1、Visual Studio:智能,但高占用,只有社区版免费,需要登录微软账号。
2、Visual Studio Code:个人感觉nice,小巧,启动速度快,加上kite插件简直神器。
3、PyCharm:补全强大,各方面智能,但高占用(1G左右),只有社区版免费。(现在笔者正在用,那必须是PJ版啦~)
print方法介绍
好了,环境配置好了,我们继续学习python吧。
在写Hello,World的时候,我们用到了一个方法:print()。它的基本用法如下:
print(要在终端输出的内容)
但是,如果这样写:
print(Hello,World!)
运行一下:
咦,怎么报错啦?
因为hello,world是字符串,在python里
输出的内容可以是字符串,用引号括起来,"Hello,World"是一个字符串,所以打了引号。
print("在终端输出的字符串")
再试一下:
脚本式编程
前面我们用的是交互式编程,输入代码,回车后立即执行。当我们要写多行代码并保存时,便要用另一种编程方式——脚本式编程。
点击File→New File新建文件,输入代码后,用Ctrl+S(save)保存。就以IDLE演示:
然后,双击你保存的文件。
·Python是解释型语言,不需要像C、Java一样编译。
注释
注释是给程序作说明的,是给程序员看的,注释主要分以下两种:
1.单行注释 #
#我是单行注释
2.多行注释 " " " 或者 ’ ’ ’
'''
我是多行注释,
以三个引号开始,
以三个引号结束。
'''
基本数据类型
python的基本数据类型有:int、float、str、bool
int:整形,即整数。
float:浮点,即小数,比如100.0也算。
str:字符串,用单引号或双引号括住,有对应的ASCII码值,可以用“+”拼接字符串,用“*”复制。
bool:布尔值,取值范围为True和False(注意首字母大写),在python中,解释器会把非零的布尔值(bool)当做True。
变量
变量就是可变的量,用“=”赋值,是任意一种数据类型,用del 变量名
删除变量。x+=1就是把x变量加1,举一反三。变量命名规则如下:
1、只能由数字、字母和下划线(_)组成。
2、不能以数字开头。
3、不能用关键字(python已经使用过、有特殊意义的名字(标识符),可以在IDLE里输入help()后回车,输入keywords回车查询)命名。
这些都是关键字:
False break for not
None class from or
True continue global pass
__peg_parser__ def if raise
and del import return
as elif in try
assert else is while
async except lambda with
await finally nonlocal yield
内置基本方法
方法 | 描述 | 举例 | 结果 |
---|---|---|---|
input | 把用户输入的内容以字符串返回 | input(“请输入一个数:”) | 123 |
type | 查询对象的类型 | type(123) | <class’int’> |
len | 序列对象(str、list等)的长度 | len(“ABC”) | 3 |
round | 返回小数四舍五入的值 | round(3.1415926535,2) | 3.14 |
eval | 计算表达式的值 | eval(“1+2+2”) | 5 |
ord | 返回字符的ASCII码值 | ord(“A”) | 65 |
chr | 返回ASCII码值对应字符 | chr(65) | ‘A’ |
运算符
运算符分为算术运算符、关系运算符和逻辑运算符三种。
算数运算符
也就是加减乘除这些数学运算
算数运算符有:
2**3 #幂运算,2的3次方,结果为8
1+1 #加,1加1,结果为2
2-1 #减,2减1,结果为1
2*4 #乘,2乘以4,结果为8
10/2 #除,10除以2,结果为5
11%2 #取模(也就是求余),11除以2的余数,结果为1
11//2 #整除,11除以2向下取整,结果为5
关系运算符
也就是左右两值比较,结果为真则返回True,结果为假则返回False
1==2 #等于(注意是两个等号),判断1是否等于2,结果为False
3!=5 #不等于,判断3是否不等于5,结果为True
10>9 #大于,判断10是否大于9,结果为True
1<2 #小于,判断1是否小于2,结果为True
5>=5 #大于等于,判断5是否大于等于5,结果为True
3<=3 #小于等于,判断3是否小于等于3,结果为True
逻辑运算符
逻辑运算符左右为布尔值,如果不是布尔值,则会进行强制转换,逻辑运算符有以下三种:
or:左右bool任意一个为True结果则为True,左右两边都为False结果为False。
or返回值讲解:
print(3 or 1)
#输出3,前面提到过一句话:在python强制转换中,解释器会把非零的数据当做True。3≠0,所以为True。因为左
#右bool任意一个为True结果则为True,所以解释器为了提高效率,想:3已经是True了,后面不管是True还是False,结果都为T
#rue,于是结果为3。
print(0 or 10)
#输出10,因为0=False,无法确定结果,所以继续判断10,10≠False,所以输出10
and:左右bool都为True结果则为True,任意一个bool为False结果都为False。
and如果结果≠False,则结果为后面的值。
not:将bool的结果反过来,not True结果为False,not False结果为True。
and
逻辑式 | 结果 |
---|---|
True and True | True |
True and False | False |
False and True | False |
False and False | False |
or
逻辑式 | 结果 |
---|---|
True or True | True |
True or False | True |
False or True | True |
False or False | False |
not
逻辑式 | 结果 |
---|---|
not True | False |
not False | True |
另外,当多个逻辑运算符在一个逻辑式中时,优先级分别为not,and,or
(not老大,and老二,or老三)
if语句
if直译过来是 如果 ,基本用法如下:
if 条件:
要执行的代码
......
if后面跟着一个数据,这个数据如果为True,则执行缩进部分的代码,否则跳过。
if…else的用法如下:
if 条件:
条件满足时执行的代码
else:
条件不满足时执行的代码
elif的用法如下:
if 条件1:
条件1满足时执行的代码
elif 条件2:
条件1不满足并且条件2满足时执行的代码
elif 条件3:
条件1不满足,条件2不满足,条件3满足时执行的代码
elif 条件n:
条件1不满足,条件2不满足,条件3不满足,……,条件n满足时执行的代码
else:
条件1和条件2和条件3和……和条件n都不满足时执行的代码
循环语句
循环语句分为 while 和 for 两种
while循环
我们先来学习while语句,while语句是条件循环语句,执行这个语句时,每一次循环前都会判断条件是否成立,如果成立就执行缩进部分,如果不成立则跳过,执行下面的代码,也就是“当条件满足时一直循环,直到条件不满足时结束循环”
我们来看看while语句的写法:
while 条件:
条件满足时要循环执行的语句
如果一个程序要一直执行(死循环),那就这样写 :
while True:
一直循环的代码
for循环
与while循环不同,for循环一般都是指定循环的次数,它的写法如下:
for 变量名 in 可迭代数据:
循环执行的语句
啊,这个可迭代数据又是什么玩意啊,这个循环什么意思啊,……这个以后再学,现在我们只需要掌握一种用法:
for i in range(次数):
循环执行的语句
举个例子,我要连续十次print(“你好”):
break语句和continue语句
break
就是停止当前循环,执行下面的代码。
continue
结束当前一轮循环,开始下一轮循环。
try……except语句
我们的程序在运行时难免会有些错误,有可能是自己的疏忽:
print(你好)
也有可能是用户的问题,比如你编写了一个程序,用户不按照你的要求输入:
a = input("请输入要计算的算式:")
print(eval(a))
理论上是没有问题的:
但要是用户不按要求输入,比如输入“hello”:
那你的程序就没有好果子吃了。
如果你在后面还写了很多代码,就因为一个错误,全都泡鸡汤了。
这个时候就要用上try语句了,它的写法:
try:
可能会出错的语句
except:
出错后要处理的语句
通常我们在不需要处理错误的情况下,就这样写:
try:
可能会出错的语句
except:
pass
这样就可以避免错误了
我们还可以把错误原因写入变量e中,并将其打印出来:
try:
a = input("请输入要计算的算式:")
print(eval(a))
except Exception as e:
print(e)
运行结果如下:
再深入一些,我们可以猜测错误的类型,并做出不同的措施:
try:
a = input("请输入要计算的算式:")
print(eval(a))
except NameError as en:
print("名称错误")
print(en)
except ZeroDivisionError as ez:
print("0不能作除数")
print(ez)
[深入讲解]数据类型
int
python提供了nb的大数字处理,这让我们在做大数字运算的时候轻轻松松。
float
浮点数不是很精确(在我们眼里看来),不过最新版的python精确了。在早期的python2.x中,0.1 = 0.0000000000000001。
bool
int(True)= 1
bool(任何不为0的数)=1
int(False)= 0
bool(0)= bool(“”)= bool(None)= False
str
有点多,就说下常用的:
str.upper() #返回字符串全部大写
str.lower() #返回字符串全部小写
str.title() #返回字符串单词首字母大写,其他小写
str.capitalize() #返回字符串首字母大写,其他小写
str.swapcase() #返回字符串大小写反转
str.join() #返回所有可迭代数据用字符串连接
str.format() #把字符串中的{}给依次替换成传入的参数并返回
这里说一下,这些字符串函数就是返回字符串而不是改变字符串本身。
两个字符串用+
连接(+可省略),用*
复制。
list
就是列表,里面的元素是可以更改的,列表的写法如下:
[元素1,元素2,元素3]
想要访问列表中的元素:
列表名[n]
如果我们要访问列表的第n个数据,就要[n-1],举个栗子:
fruit = ["apple","banana","pear","strawberry"]
比如,我想访问第一项,就要写fruit[0]
为什么是这样呢?因为程序都是从零开始的。不信?运行下列代码:
print(list(range(5)))
好了,接着说,如果要访问列表的倒数第n个元素,就写[-n]
:
使用append(元素)
可以添加元素在列表最后(推荐使用):
使用insert(插入的位置,元素)可以
插入元素(不推荐使用):
这里说一下为什么不推荐使用:
(摘自Magnus Lie Hetland《Python 算法教程》)
append操作允许我们将原有的空间加上一定的百分比来进行“过度”分配,其可用空间的增长方式是指数式的,这是,append操作的成本在交由所有操作平均承担(均摊)的情况下就成了常数级操作
虽然你可能听的不是很懂,反正你只管(一般情况下)常数级花的时间少,效率高。也就是说,大多数情况下,append比insert快。(想想,东西追加在后面的append快 还是 把插入位置以后的数据往后移动在插入的insert快)
使用pop(要删除的元素的位置)
可以删除元素,并返回元素
使用remove(要删除的元素)
可以删除元素(如果有相同的元素,则删除第一个)
使用index(要寻找位置的元素)
返回元素的位置(如果有相同的元素,则返回第一个)
使用extend(要合并的列表名)
可以合并两个列表
tuple
可以想象成不可改变元素的列表,它的写法如下:
(元素1,元素2,元素3)
如果修改了元素,会报错:
dict
set
拓展ctypes
结束
这几天还在改,有些部分我只写出了大致框架,过后再写,所以给大家呈现的内容可能不是很完整,谢谢理解!
我还会不断修订此书,记得常来阅读!
再见!