2. 初识 Python 脚本

Python 的系列课程是写给零基础的小白看的,如果基础比较好的小伙伴可以暂时先不关注,等待后续课程。

Hi, 大家好,我是茶桁。

之前的课程已经给大家讲解了 Python 相关特性和基本语法。那么这节课呢,我们尝试着从最简单的脚本来开始认识 Python。

在开始这节课之前呢,我是默认大家已经安装好了 VSCode,并且配置好了 Jupyter 环境和 Python 的基本环境。如果在这一步有疑问的小伙伴,可以留言私信我。

我们在终端里输入:

1
2
$ python -V
Python 3.10.11

可以看到自己的 Python 版本。

这个时候,我们其实已经可以在终端里进行 Python 的代码编辑了,如下:

1
2
3
$ python
>>> print("Hello AI Cheats")
Hello AI Cheats

如下图:

image-20230730162816574

我们这里需要理解一下,编写 python 程序的文件,称为 python 的脚本或程序。要求我们当前的 python 脚本的文件后缀名必须是.py,如果是 Jupyter 的文件,后缀是.ipynb

print可以在程序中输出一些内容,如字符串,数字等等。

函数就是为了完成一些功能,例如: print 就是为了输出数据。

变量

变量就是用一个英文字符串来记录或标记一些数据,并且这个被标记的数据是可以变化的。

比如 num = 10,就是把数据 10 赋值给了变量num来使用,之后就可以使用num来代替这个 10 的数据。

命名规范

这里我们强调一下 Python 的命名规范,所有在教授编程的教程中最初一定都会强调规范性。

变量的命名规范如下:

  • 变量名可以使用字母,数字,下划线_,
  • 不能以数字开头
  • 严格区分大小写
  • 不要使用中文
  • 不要使用关键字 if else True False print

当然具体关键字并不仅仅是这些,这里列出了Python 的关键字,大家可以自行查看一下,命名的时候需要进行避免。

变量的定义方式

在遵循了变量命名规范之下,我们可以有以下几种定义方式:

1
2
3
4
5
6
# 第一种定义方式
a = 10
b = 20

# 第二种定义方式
a,b = 30, 40

这里我们来思考一个问题,如何实现两个变量的数据相互交换呢?

1
2
3
4
5
6
# 定义两个变量
a = 10
b = 20

# 交换两个变量的值
...

如果使用最普通的方式完成变量数据的交换,那么我们可以使用如下步骤:

  1. 把 a 变量的值 赋值给 c ,此时 c 变量中 就是 10
  2. 把 b 变量的值 赋值给 a , 此时 a 变量中 就是 20
  3. 把 c 变量的值 赋值给 b , 此时 b 变量中 就是 10
1
2
3
4
5
6
7
8
9
# 普通方式交换数据
a = 10
b = 20

c = a
a = b
b = c

print(a, b)

输出结果:

1
20, 10

我们还可以利用 python 定义比变量的语法来实现变量的数据交换

1
2
3
4
5
# 定义比变量的语法方式
a = 10
b = 20
a,b = b,a
print(a, b)

输出结果:

1
20,10

Python 的数据类型

数据类型就是数据的表现形式,比如 “你好” 就是一个字符串,200 就是一个数字。

在程序当中除了这种常用的字符和数字外还有很多其它的数据表现形式。

在 Python 中,我们可以使用type()函数来返回当前数据的数据类型:

1
2
3
s = 'ilovechaheng'
res = type(s)
print(res)

输出结果:

1
<class 'str'>

字符串类型

  • 单双引号都可以定义字符串
  • 三引号也可以定义字符串
  • 单双引号定义的字符串不能随意换行,需要在换行时指明换行符
  • 字符串中的引号可以互相嵌套,但是不能嵌套自己(例如不能在单引号中嵌套单引号,除非转义)
  • 字符串中可以使用转义字符,如 ..
  • 如果不想在字符串中实现转义字符可以在字符定义时 加 love = r'\nihao \shijie'
1
2
3
4
5
6
7
8
9
# 单引号和双引号进行定义
love = 'iloveyou'
hello = "你好 世界"

# 使用三引号实现大字符串的定义,一般用于大文本字符串的定义,并且大字符串,可以换行
s = '''
比如说这一个
很长很长的文章内容。。。
'''

数字类型

  • int 整型
  • float 浮点类型
  • complex 复数
  • bool 布尔类型(True,False)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 数字类型 Number
varn = 521
varn = -1111
varn = 3.1415926
varn = 0x10 # 十六进制
varn = b'001100111' # bytes

# 复数
varn = 5+6j # complex

# 布尔类型 bool
varn = True
varn = False
# print(varn,type(varn))

# 数值类型可以参与运算
a = 10
b = 20
print(a+b) # 输出结果 30

List 列表类型

  • 列表用来表示一系列数据,例如: 需要记录一组数字或其它数据
  • 列表中存储的数据可以是任意类型的
  • 在需要记录多个数据时,可以使用中括号进行定义 [],
  • 并且每个数据之间使用逗号分隔 ,
  • 例如以下数据,定义了几组数字
  • 列表中存储的每一组数据,称为元素
  • 列表中存储的数据,可以通过下标的方式进行获取
  • 那么列表中元素的值可不可以存储一个列表,称为 二级列表(二维列表) 或者 多级列表 (多维列表)

关于列表中的下标,正读和反读的正负号是不一样的:

1
2
3
4
5
6
7
8
# 关于列表中的下标
'''
0 1 2 3 4
['a','b',521,'pai',3.1415926]
-5 -4 -3 -2 -1
'''
a = ['a','b',521,'pai',3.1415926]
print(a[-3])

输出结果:

1
521

tuple 元组类型的定义

  • 在定义多个数据内容时,可以选择使用 List 列表类型
  • 还可以使用元组类型来定义,
  • 元组和列表非常像,都时用于存储多个数据时使用
  • 元组使用小括号进行定义(),列表使用中括号进行定义
  • 元组的最大特点就是值不能被改变
1
2
3
vart = (1,2,3,'a','b')
# 元组的其它定义方式
vart = 1,2,3

注意在定义元组时,如果元组中只有一个元素,那么需要加, 不然就不是元组类型了

Dict 字典类型

  • 字典也是用于存储一组或多组数据时使用,使用大括号 {}来定义
  • 字典是 键值对 的存储方式 name :admin
  • 键和值之间使用冒号进行分隔,多组键值对之间使用逗号分隔
  • 键必须是字符串或数字类型,值可以是任意类型
  • 键名不能重复,值可以重复
1
2
3
4
5
6
7
8
9
10
# 比如需要记录一本书的相关数据 书名,作者,价格,。。。
vard = {'title':'<<鬼谷子>>','author':'鬼谷子','price':'29.99'}
# print(vard,type(vard))
# {'title': '<<鬼谷子>>', 'author': '鬼谷子', 'price': '29.99'} <class 'dict'>

# 获取字典中的值
print(vard['title'])
# 字典中的键不能重复使用,否则会覆盖
vard = {'a':10,'b':10,'c':20,'a':'aa',1:'abcdef','2':'2222'}
print(vard)

输出结果:

1
2
<<鬼谷子>>
{'a': 'aa', 'b': 10, 'c': 20, 1: 'abcdef', '2': '2222'}

在 python 之前的版本中,字典是无序的

set 集合类型

  • set 集合是一个 无序且元素不重复的 集合的数据类型
  • set 集合使用 中括号或者 set()方法来定义
  • 如果需要定义一个空集合时 只能使用 set()方法,因为大括号时定义的空字典
  • 集合主要用于运算,交集,差集,并集,对称集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a = {1,2,3,'a'}
# 给集合添加元素
# a.add('b')
# 无法获取集合中的单个元素,但是可以添加和删除
# a.discard('a')
# print(a)
# 检查当前的元素是否在集合中
# print(1 in a)


# 集合主要用于运算,交集,差集,并集,对称集合
a = {1,2,3,'a','b'}
b = {1,'a',22,33}

print(a & b) # 交集 {1, 'a'}
print(a - b) # 差集 {'b', 2, 3} a 集合有,b 集合没有的
print(a | b) # 并集 {1, 2, 3, 33, 'a', 'b', 22} 两个集合,放到一起,并且去重
print(a ^ b) # 对称差集 {33, 2, 3, 'b', 22}

输出结果:

1
2
3
4
{1, 'a'}
{2, 3, 'b'}
{1, 2, 3, 'a', 33, 22, 'b'}
{33, 2, 3, 22, 'b'}

总结

最后,让我们来进行总结一下,关于 Python 的数据类型可以查看如下列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
字符串 string
数字类型 Number
整型 int
浮点 float
复数
布尔 bool
列表 list
元组 tuple
字典 dict
集合 set

可变数据类型:列表,字典,集合
不可不数据类型: 字符串,数字,元组

容器类型数据 : 字符串,列表,元组,集合,字典
非容器类型数据: 数字,布尔类型

数据类型转换

什么是数据类型转换?

把一个数据类型转换为另一个数据类型,例如 字符串转为数字

为什么需要数据类型转换?

因为不同的数据类型之间不能运算

数据类型转换的形式?

  • 自动类型转换
  • 强制类型转换

自动类型转换

当两个不同的值进行运算时,结果会向更高的精度进行计算:True ==> 整型 ==> 浮点 ==> 复数

1
2
3
4
5
a = 123
b = True # 在和数字运算时 True 转为数字 1,False 转为数字 0
print(a+b)
print(12.5+22)
print(True+3.14)

输出结果:

1
2
3
124
34.5
4.140000000000001

强制类型转换

python 中的每个数据类型都有对应的方法,可以对数据类型进行转换

  • str()可以把所有的其它数据类型转换为字符串类型
  • int()字符串转数字类型时,如果字符串中是纯数字,可以转换,其它容器类型不能转为数字 int 类型
  • float()浮点类型的转换和 int 类型一样,不过转换的结果是浮点类型
  • bool() 可以把其它类型转换布尔类型的 True 或 False
    • 以下情况转 bool 的结果是 False: '',0,0.0,False,[],{},(),set()
  • list()列表
    • 数字类型是 非容器类型,不能转换为列表
    • 字符串 转换为列表时 会把字符串中的每一个字符当做列表的元素
    • 集合 可以转换为 list 列表类型
    • 元组 可以转换为 list 列表类型
    • 字典 可以转换为 list 列表类型,只保留了字典中的键
  • tuple()元组
    • 数字类型 非容器类型,不能转换为元组
    • 其它容器类型的数据进行转换时,和列表一样
  • set()集合
    • 数字类型 非容器类型,不能转换为 集合
    • 字符串,列表,元组 可以转为 集合 结果是无序的
    • 字典转换为集合时,只保留了字典的键 key
  • dict()字典
    • 数字类型 非容器类型,不能转换为 字典
    • 字符串不能直接转换为 字典
    • 列表可以转换为字典,要求是一个二级列表,并且每个二级元素只能有两个值
    • 元组可以转换为字典,要求是一个二级元组,并且每个二级元素只能有两个值
作者

Hivan Du

发布于

2023-07-30

更新于

2024-01-16

许可协议

评论