一看就会,一学就“废”的Python教程

更于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("在终端输出的字符串")

再试一下:
OK了

脚本式编程

前面我们用的是交互式编程,输入代码,回车后立即执行。当我们要写多行代码并保存时,便要用另一种编程方式——脚本式编程。
点击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。
所有非零的值强转为bool时为True,0强转为bool时为False

变量

变量就是可变的量,用“=”赋值,是任意一种数据类型,用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

结束

这几天还在改,有些部分我只写出了大致框架,过后再写,所以给大家呈现的内容可能不是很完整,谢谢理解!
我还会不断修订此书,记得常来阅读!

再见!

猜你喜欢

转载自blog.csdn.net/bianchengxueseng/article/details/116373521