目录
python既然是一门语言,自然就有语法。既然有语法就会有规定和规范。
规定:必须这样做
规范:推荐你这样做,但是不这样做也行
无论处于什么原因,我都认为你应该把规范当成规定。既能够减轻记忆负担,也能写出相对比较好的代码。所以,本教程将不会严格的区分规定和规范。
概念
关于概念,具体内容可以不去背,但是得知道这么个东西。提到得时候回忆,如果回忆不起来,再来翻阅即可。所以记得收藏/点赞我的文章哈~
一、语句和表达式
语句: 程序执行的最小单元
表达式:可以运算出结果的语句
举个栗子
x = 1 + 1
# 1+1 我们称为表达式(因为执行后能运算出结果2)
# 这行代码,我们叫语句
二、变量
变量的概念和数学中的未知数是一个意思
程序运行本质是数据操作,那我们需要用一个代号来描述这个数据
a = 1
b = 2
a = b + 1
# 上面, a,b 就是叫做变量
# 变量的值是可以改变的
变量名是我们自定义的,但是要满足一定的规定:
- 只能包含字母,数字,下划线; 如:
file_name - 字母区分大小写,如:
a和A是两个不同的变量 - 不能以数字开头, 如
2name是不合法的
为了方便阅读,我们一般会用英文单词给变量命名,多个单词以下划线相隔
如:file_name="这是一个文件名"
ps: 如果你不习惯用英文单词,那么可以用拼音。但是,千万不要用拼音缩写。
比如:
xiao_ming_de_ming_zi = "小明"
# 如果你这样写:
xmdmz = "小明"
# 我保证你过10分钟后再回来看你会不知道写的是什么玩意
如果不小心被你发现,中文也可以做变量的名称
我 = 500
中国 = 20
print(我+中国) # 520
那你一定一定要记得:

三、赋值运算
x = 0
# 凡是有一个“=” 的地方我们称之为赋值运算
# 等号的左边是变量
# 等号的右边是表达式
四、关键字(保留字)
关键字:python解释器占用了一些特殊的名字拼写,并赋予了一些特殊功能。有些关键字你可以改写他的行为,但是不推荐这样做。好比“爸爸”这个词,用于对父亲的称呼。但是你非要叫我爸爸,也不是不行,但是不推荐。
列表:
False','None', 'True','and','as', 'assert','break',
'class','continue', 'def','del','elif', 'else','except',
'finally', 'for', 'from','global','if','import','in','is',
'lambda', 'nonlocal','not','or','pass','raise', 'return',
'try','while','with','yield'
不用背,以后都会熟悉的。知道什么叫关键字即可
运行程序
运行的原理
运行代码就是解释器解释代码的过程。
其实运行的过程就和你看作文是一样的,程序也是从上往下,从左往右运行的。
如何运行
从现在开始,你需要一边和我一起写代码,一边运行测试结果了。所以先说下如何运行代码
-
方案1:交互式解释器
在cmd或者终端中输入python3

进入到这个界面后就可以写代码了
如

优点:方便,不需要额外安装(安装python后就能运行)
缺点:没有代码提示,不能保存密码 -
方案2 : 使用ipython
需要安装,和方案1差不多,但是有代码提示。
安装和使用教程,自行搜索,关键字: windows(或别的操作系统) ipython3 安装 -
方案3: 在线编辑器
这个网上有很多,搜索关键字: python 在线运行
如:https://c.runoob.com/compile/9 -
使用vscode
- 创建一个文件夹( 文件夹路径最好不要有中文)
- 打开vscode, 并打开对应的文件夹

- 创建python文件(后缀名为py)

只要后缀名正确即可,名字可任意取。
4.编辑代码并保存文件,点击下方图片2区或者使用快捷键ctrl+反引号呼出终端窗口

5. 输入python 文件名.py回车即可,30为程序输入内容

推荐方案3或方案4
数据类型
上面提到过,写代码本质就是进行数据操作,数据类型就是对数据的一种分类。
python 只能识别并处理有限的数据类型。(我不会讲完)
字符串 string
凡是用双引号或者单引号扩起来的文本,都叫字符串
"这是个字符串"
'这也是个字符串'
只需要注意一点:双引号和单引号都是英文输入法下的符号
其实代码里所有用到的标点符号都应该是英文输入法下的,否则程序会报错
(如果字符串中的例外,如: "这里可以用中文的符号:,。“,但不能放到引号外 ")
数字类型 int/float
数字类型分有两种 int 类型和 float
int 类型叫做整形,也就是整数的意思,如:0
float 类型叫做浮点类型,其实就是小数,如:1.1
我只需要你记住:
- 能用int 的时候就不要用float
- float 计算是不精确的
# 运行下面代码
print(0.1+0.2)
结果是 :0.30000000000000004
列表
string/int/float 是最基础的3种类型,已经能做很多事情了。我们先看一个列子,用程序描述
小明,小王,小丽,他们的年龄分别是:18,20,22
xiaoming = "小明"
xiaowang = "小王"
xiaoli = "小丽"
xiaoming_age = 18
xiaowang_age = 20
xiaoli_age = 22
代码中用到的概念:变量,string,int
你会发现,这样描述会比较繁琐。如果有20个人,那你是不是要写20行代码?
所以,我们其实可以对数据进行分组归类。这就是列表的意义。
列表的特点:
- 是数据的有序集合
- 用
[]包围
同样的题目,我们用列表代码来描述
names = ["小明", "小王", "小丽"]
ages = [18, 20, 22]
是不是比较好了呢?
字典
我们再重新看上面的题目,即使我们用了列表来描述。还是觉得缺少了点东西。年龄和名字分开了,唯一的联系是他们在列表中的位置。总觉得不安全,万一我写错顺序了呢?所以,就诞生了字典这种数据类型。
我们直接上代码
person = {
"小明": 18,
"小王": 20,
"小丽": 22,
}
总结下字典的特点:
- 用
{}扩起来 - 每个元素用
:分为两部分,我们称:左边的部分为键(key),右边成为值(value)。 - 元素之间用
,分隔
其他代码没有提现的特点: - 键只能是字符串(这说法不准确,但是你可以这样认为)
- 值可以是任意数据类型(甚至是字典本身)
其他数据类型
布尔类型(bool)
- 布尔类型只有两个值:
True, False - 就是真和假的意思,在做判断的时候会用到
空值类型
- 空值类型代表什么都没有,是个特殊的数据类型
- 空值的值为
None
还有其他类型我们遇到了再说,数据类型就讲到这。如何使用这些数据类型的问题,后面会结合例子来讲解。
代码注释
注释是写给人看的,当解释器遇到注释,会忽略注释内容
#号后面的内容均为注释,可以单独一行,也能写在代码的后面
# 这是注释
a = 10 # 这里也是注释
print 是一个系统内置的函数,函数是什么后面会讲
功能:打印内容到终端(如果你使用的是交互式解释器,会自动帮你打印运行的结果)
练习1 print函数的应用
创建 test_1.py 文件
# test1.py
a = 10
b = 20
c = a + b
# 保存文件,运行一次代码,再继续往下写
print(c)
第一次执行结果:

第二次执行结果:

可以看到,只有调用print 函数后,终端上才会现实结果:30
如果不调用print 函数,我们没法知道程序是否运行了,结果是不是符合预期的
后面的练习会大量的使用该函数,所以提前说明
条件判断
条件判断是程序的魅力所在。正因为有条件判断,程序才有了多种可能。
在python中,条件判断有固定的语法。也叫if 语句
结构:

再次强调下,程序是从上往下,从左往右运行。不会错过任何一个符号,包括空格。
语法规定,if 语句的下面,至少有一行是以4个空格开头的。标志着if语句的作用域。
知识点:
if语句不一定要有elseelse是和if搭配使用的关键字,含义是否则。
整个代码的含义是:
如果 a 的值是10,那么打印 “条件为真” 否则 打印 “条件为假”- 判断语句的执行结果为bool类型的值(真
True/假False) - 运算符
| 符号 | 含义 |
|---|---|
| == | 等于 |
| != | 不等于 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| + | 加 |
| - | 减 |
| * | 乘 |
| / | 除 |
| % | 求余 |
更详细的说明参考:https://www.runoob.com/python/python-operators.html
需要注意的是== 和= 的区别。
== 用于比较左右两边的值是否相等
= 用于赋值,也就是将等号右边的值赋给左边的变量
练习2 条件语句
新建test_2.py文件 (先照着写代码,不要复制。想一想程序运行的结果是什么,再运行程序校验结果)
a = 10
if a == 10:
print("a等于10")
else:
print("a不等于10")
b = 20
if b > 10:
print("b 大于 10")
print("想一想,这句会打印吗, 为什么")
运行结果
a等于10
b 大于 10
想一想,这句会打印吗, 为什么
遍历(for…in…语句)
前面我们了解了列表这样的数据结构,知道列表是一堆数据的集合。那么,我们又怎么取出来呢?
栗子1
array = [1,2,3,4,5] # 这里定义了一个名字为array的变量,并将列表[1,2,3,4,5]赋值给array
print(array[0])
print(array[1])
print(array[2])
print(array[3])
print(array[4])
# 运行结果
# 1
# 2
# 3
# 4
# 5
上面的代码可以看到,我们通过array[0] 取出了列表中的第一个值 1
[] 里面的数字我们又叫做索引,代表列表中的位置。程序猿数数字是从0开始的,所以第一个数字的索引是0
写到这,聪明的童鞋可能就会说了,我们用列表定义一堆数字是简单了, 取值如此麻烦。那我还不如一开始就用多个变量来赋值呢。
别着急,这就是遍历存在的意义了。所谓遍历实际就是数数。
我们现在就用for…in… 语句改造栗子1
栗子2:
array = [1,2,3,4,5]
for item in array: # 从array中一个个的取出里面的元素
print(item) # 每取出一个元素的时候,就会执行一次`print(item)`
栗子2和栗子1运行的结果是一样的。
注意,第三行代码又是以4个空格开头哦。想一想,为什么?
for .. in .. 语句除了能够遍历列表,还能够遍历字典(假设你还记得字典是什么)
person = {
"小明": 18,
"小王": 20,
"小丽": 22,
}
for key in person: # 从字典中一个个的取出key
print(key) # 每取出一个key,就会打印一次key
print(person[key]) # 每取出一个key,就会打印一次value, 字典的取值方式和列表很像,但是[]里面是key,不是数字
运行结果
小明
18
小王
20
小丽
22
练习3 for…in… 语句
# test3.py
num = 0
for item in [1,2,3,4,5]:
num = num + item
print(num)
运行结果:(老规矩,先想,后执行,再校验)
15
循环 while
循环顾名思义就是重复执行的意思。和遍历很像,但使用的场景不同。
栗子1
a = 0
while a < 10: # while是循环的关键字, 紧跟着的是循环条件, 如果循环条件为真,则会执行循环体内的代码
a = a + 2
print(a)
print("循环结束")
执行结果:
2
4
6
8
10
循环结束
思考题
- 代码注释中提到的循环体指代的是哪几行代码?解释器如何识别循环体的?
写循环代码的时候,一定要有终止条件。
栗子1的代码中,循环条件为: a<10 ,每循环一次,a 的值都会加2,那么总会有a >=10 的时候。
当a>=10 就会退出循环, 这就是终止条件。
如果你不小心,漏了,或者判断的条件失误,那么代码就会一直执行下去。我们称之为死循环。
死循环有可能会造成计算器卡死, 趁着没彻底卡死之前,你可以通过ctrl+c 来强行终止代码运行
或者直接关闭终端。
我们还可以通过break 语句终止循环
a = 1
while True:
print("第", a, "次循环开始") # print 可以接收多个参数,用逗号分隔
a += 1 # 等价 a = a + 1
if a > 5:
break # 跳出循环
print("第%d次循环结束" % a - 1) # 这里有个格式化字符串的知识点,详情参考:https://www.jianshu.com/p/9f1068f495bd
print("循环结束")
运行结果:
第 1 次循环开始
第 2 次循环开始
第 3 次循环开始
第 4 次循环开始
第 5 次循环开始
循环结束
break 语句还可以跳出for..in 语句,但是很少这样用。
函数
如果说,列表和字典是数据的集合。那么函数就是代码的集合。
一般函数是以功能为单位对代码进行封装。
函数是写代码的精髓,你掌握了函数,就可以说就掌握了代码的半壁江山。
随手编个奇葩的题目:
给定一个人名列表,如:["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
遍历每一个人的名字,如果是王老师, 你就要打印三句话:
- 老师早上好
- 老师中午好
- 老师下午好
用我们上面的讲到的内容,你也许会写出下面的代码
person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
if item == "王老师":
print("老师早上好")
print("老师中午好")
print("老师下午好")
这时候,张老师不服了, 和你说,不行,凭什么王老师你就打印,我就不打印了?
于是你又开始改造你的代码
person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
if item == "王老师":
print("老师早上好")
print("老师中午好")
print("老师下午好")
if item == "张老师":
print("老师早上好")
print("老师中午好")
print("老师下午好")
那如果还有李老师,诸葛老师。。。你会不会觉得,他们真烦。
这时候函数跳出来和你说了: 不要写重复的代码!
def greet():
print("老师早上好")
print("老师中午好")
print("老师下午好")
person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
if item == "王老师":
greet()
if item == "张老师":
greet()
总结:
def函数关键字,用于定义一个函数greet自定义函数名, 本质也是个变量。后面的():固定写法- 函数体 :紧跟着函数定义的下一行,且以4个空格开头
greet()函数调用(最后一行和倒数第三行), 我们通过函数名()的方式调用函数,也就代表了执行函数体中的代码
注意,当解释器遇到def定义函数的时候,并不会去执行函数体中的内容,而是等到函数调用的时候才执行。
这时候,有的童鞋又问了, 函数就只有这点作用吗?答案是No!
张老师还是不满意,这不行啊,你只叫老师好,谁知道你心里想着哪个老师?
所以你要说x老师好
于是又要改代码了
def greet(name):
print("%s早上好" % name)
print("%s中午好" % name)
print("%s下午好" % name)
person = ["小明", "小红", "王老师", "小丽", "王老师", "张老师"]
for item in person:
if item == "王老师" or item == "张老师": # 这里用or连接了两个判断语句, 意思是“或”, 即满足任一条件即为真
greet(item)
到这,我们又引入了一个概念,函数参数。 函数参数又分为实参和形参。
实参:函数调用时候传入得参数。 代码greet(item) 括号里的item 就是实参
形参:函数定义时候,占位置用的参数。 代码def greet(name): 括号中的name 就称为形参。形参的值,由调用函数的时候传入的实参来决定。
函数还有一个重要的知识点:函数返回值
函数调用语句也是一个表达式,也就是能够计算出结果的。
def get_name():
return "王老师"
name = get_name()
print(name)
运行结果
王老师
函数返回值通过return定义, 如果没有定义,则默认返回None , 代表什么都没有。
def get_name()
pass # pass 是空语句,什么都不执行,起到占位置,保持结构完整的作用
name = get_name()
print(name)
运行结果
None
可能废话有点多, 我只需要你记住函数的四个要素 : 函数名,函数调用,参数,返回值
练习4 函数
用函数实现,计算给定两个参数的和并返回。
def sum(a,b):
return a + b
print(sum(1, 1))
print(sum(10,1))
运行结果
2
11
类 (不需要掌握)
类虽然很好用,也很重要。但对非开发人员来说,并不是非掌握不可。
我本来计划这次教程中不会讲类,但是想到,不写不代表不会用到。所以大概讲一讲。就当作一个课外读物。
类是比函数更高级的封装。
如果说函数是代码的集合,那么类就是函数和变量的集合。
# 这里定义了一个类
class Dog: # class 关键字, Dog 自定义类名
sex = "公"
def __init__(self, color):
self.color = color
def describe(self):
print("这是一只%s颜色的狗" % self.color)
# 下面是类的使用
# 类的实例化, 和函数调用很像。 有的类不一定需要传入参数,看怎么定义的
dog = Dog("黑色")
# 类里面的函数,叫做方法。 实例化后可以调用
dog.describe()
# 类里面变量的值,叫做属性
print(dog.sex)
我们重点放在类的使用上, 大部分时候我们并不需要自己实现一个类。能够做到使用别人写好的类,就足够用了。
讲类只是为了让你以后看到 dog.sex 这种点来点去的东西不要太惊讶。
包和模块
讲包和模块主要是为了让你理解,如何使用别人的代码。
我们写代码很少像练习这样几乎从头开始写。我们要做的是资源整合。
模块: 就是一个python文件(以.py结尾的文件)。
包: 一个包含多个模块的文件夹
使用别人的代码并不是说让你复制粘贴,而是通过引入的方式。直接调用别人的函数或者类。
栗子:
练习4中, 我们定义了一个函数sum
在相同目录下,我们新建一个test_5.py
import test_4 # 使用 import 语句导入一个模块
print("开始")
print(test_4.sum(10, 20)) # 模块名.函数名() 的方式可以直接调用模块中的方法
print("结束")
运行结果:
2
11
开始
30
结束
咦。 2,11 从哪里来的呢?
放心,不是我粘贴错了。
我们重新看下test_4.py的代码
def sum(a, b):
return a + b
print(sum(1, 1))
print(sum(10, 1))
原来在这里,而且我们还能发现,2,11 是在打印“开始”之前就输入了
所以可以推断:import 的本质就是把外部的代码执行了一遍。
结语
是的,python 入门已经讲完了。
除去一些废话,实际讲的干货并不多。
你可能会怀疑,就这些,算入门了吗?
我可以负责任的告诉你,上面的内容足够你解决50%以上的问题。
如何应用就看你掌握的程度了,编程不是厚积薄发。边学边用,你就会越来越熟练。
虽然入门已经结束,但是本系列还会继续更新。接下来将以一个一个具体案例为主。
本文全面介绍了Python编程的基础知识,包括语句与表达式、变量、赋值运算、关键字、数据类型如字符串、数字、列表和字典,以及代码注释、打印函数、条件判断、遍历循环、函数和类的基本概念。通过丰富的示例代码,帮助初学者快速掌握Python编程的核心技能。
3030

被折叠的 条评论
为什么被折叠?



