变量与赋值

python是弱数据类型语言,变量可以接收任何类型的数值,数据是什么类型,变量就是什么类型

赋值即定义变量,变量必须先赋值后使用

基本赋值

赋值演示

1
2
3
4
## 变量与赋值
x = 3
y = 5.2
print(x, y)

输出

1
3 5.2

链式赋值

1
2
3
# 链式赋值
x = y = z = 7
print(x, y, z)

输出

1
7 7 7

解包赋值

1
2
3
# 解包赋值
a, b = 100, 200
print(a, b)

输出

1
100 200

解包赋值可以实现两个变量值的交换

解包赋值交换演示

1
2
3
4
5
# 解包赋值交换
a = 3
b = 4
a, b = b, a
print(a, b)

输出

1
4 3

输入输出

输入函数input

def input(__prompt);

__prompt为提示信息,可以省略、

基本输入

样例演示

1
2
3
# 输入输出
var = input("我将打印你所输入的内容: ")
print(var)

输出

1
2
我将重复你所输入的内容: hello, world
hello, world

不论输入什么,input都接收并将其打包成一个字符串返回

若要接收一个数字,通常在接收的同时进行类型转换

样例演示

1
2
3
4
5
6
# input返回值验证
i = input("请输入: ")
print(type(i))
# 转换为int
i = int(i)
print(type(i))

输出结果

1
2
3
请输入: 2
<class 'str'>
<class 'int'>

表达式解析

还有一种输入方式,称为表达式解析

通过一个内置的函数eval(),将用户输入的字符串解析为表达式(单个数据 也是表达式),若表达式可计算,则计算后返回其值

格式为变量 = eval(input("提示字符串"))

可认为eval是去掉接收到的字符串的引号

样例演示

1
2
3
# eval表达式解析
c = eval(input("请输入: "))
print(c)

输出结果

1
2
请输入: 3**2
9

输出函数print

def print(self, *args, sep=' ', end='\n', file=None)

参数说明

  • sep: 输出表达式之间的间隔字符串,默认是空格
  • end:输出表达式的结尾字符串,默认是换行

案例演示

1
2
3
4
5
#print输入输出
a = b = c = 1
print(a, b, c)
print(a, b, c, sep='#')
print(a, b, c , '\n\n', end="换行")

输出结果

1
2
3
4
5
1 1 1
1#1#1
1 1 1

换行

格式化输出

这块使用方法和c语言格式化输出差不多

image-20230221212401216

整数格式化演示

1
2
3
4
5
6
7
8
9
# 格式化输出 整数
x = 1024
print("x = %6d" % x)
print("x = %2d" % x)
print("x = %-6d" % x)
print("x = %+6d" % x)
print("x = %06d" % x)
print("x = %#o" % x)
print("x = %#x" % x)

输出结果

1
2
3
4
5
6
7
x =   1024
x = 1024
x = 1024
x = +1024
x = 001024
x = 0o2000
x = 0x400

浮点数格式化演示

1
2
3
4
5
6
7
8
# 浮点数输出格式 浮点数
x = 128.22222
print("%6.2f" % x)
print("%3.1f" % x)
print("%.2e" % x)
print("%+6.2f" % x)
print("%12.2f" % x)
print("%-12.2f" % x)

输出结果

1
2
3
4
5
6
128.22
128.2
1.28e+02
+128.22
128.22
128.22

字符串输出格式化示例

1
2
3
4
5
6
7
# 字符串输出格式化示例 字符串
name = "湖南科技大学"
print("%10s" % name)
print("%10.2s" % name)
print("%-10.2s" % name)
print("%1.2s" % name)
print("%4s" % name)

结果

1
2
3
4
5
湖南科技大学
湖南
湖南
湖南
湖南科技大学

格式化函数输出

格式字符串和format之间用 . 隔开

基本用法

(1)空括号,即“{}”

(2)带数字(参数位置序号,默认从0开始,可调换顺序),如{1} 、 {2}

(3)带关键字(可读性好),如:{name}、{age}

案例演示

1
2
3
4
5
6
# 格式化函数输出 基本用法
name = input()
age = int(input())
print("姓名: {}, 年龄: {}".format(name, age))
print("姓名: {1}, 年龄: {0}".format(age, name))
print("姓名: {n}, 年龄: {a}".format(n = name, a = age))

进阶用法

(1)< 左对齐、> 右对齐(默认)、^ 中间对齐

(2)设置输出位数“{:4s}”、"{:.2f}"等

1
2
3
4
5
r = 3
pi = 3.1415926
area = pi * r * r
print("{:.2f}".format(pi))
print("半径: {0:<3d}, 面积: {1:10.3f}".format(r, area))

结果

1
2
3.14
半径: 3 , 面积: 28.274

f-string简化输出

格式:f带占位大括号的字符串

1
2
3
4
5
# f-string输出
r = 3
pi = 3.1415926
print(f"{pi}")
print(f"圆周率: {pi: <.2f}, 面积: {pi * r * r :10.3f}")

结果

1
2
3.1415926
圆周率: 3.14, 面积: 28.274

注释

单行注释

单行注释以#开头

例如

1
# 单行注释

多行注释

多行注释用三个单引号'''或者"""将注释括起来

例如

1
2
3
4
5
6
7
'''
多行注释
'''

"""
多行注释
"""

数据类型

python数据类型主要分为以下六大类

Numbers(数字):int、float、complex、bool

String(字符串)

List(列表)

Tuple(元组)

Dictionary(字典)

set(集合)

其中:

值类型(不可变):Number(数字)、String(字符串)、Tuple(元组)

引用类型(可变):List(列表)、Dictionary(字典)、Set(集合)

数字类型

整型

取值为整数,有正有负,如 2,-666,666 等。

没有长度限制,可以定义或计算几百位的大整数。

支持4种数制:十(默认)、二(前缀为0b或0B)、八(前缀为0o或0O )、 十六(前缀为0x或0X)

演示

1
2
3
4
5
# 数据类型 整型
print(10000) # 十进制
print(0b0101) # 二进制
print(0o100) # 八进制
print(0x100) # 十六进制

结果

1
2
3
4
10000
5
64
256

浮点型

浮点数(实数)是指带小数的数字,如3.14、4.、.5

还有一种表示浮点数的方式——科学计数法:-27.3e2

Python中能使用的只有十进制浮点数。

Python浮点数有长度限制,超过上下限会导致溢出错误。

浮点数不一定能精确表示小数,精度有限。

演示

1
2
3
4
# 数据类型 浮点型
print(3.9)
print(100.0 * 100)
print(-27.3e2)

结果

1
2
3
3.9
10000.0
-2730.0

复数型

使用 1j (或1J)表示-1的平方根

复数对象有两个属性:real(实部)和imag(虚部)

1
2
3
4
5
6
# 数据类型 复数型
x = 3 + 4J
print(x.real)
print(x.imag)
print(3 + x)
print(x * x)

结果

1
2
3
4
5
6
# 数据类型 复数型
x = 3 + 4J
print(x.real)
print(x.imag)
print(3 + x)
print(x * x)

布尔型

布尔值只有两个取值:True和False(注意首字母大写)

可参与算数运算,运算时True的值为1,False的值为0

1
2
3
4
5
# 数据类型 布尔型
print(4 > 5)
print(1 == 1)
print(3 + True)
print(1 == '1')

结果

1
2
3
4
False
True
4
False

字符串

我们可以用引号'或者"来创建字符串

例如

1
2
3
# 字符串创建
str1 = 'hello'
str2 = "hello"

访问字符串中的值

python不支持单字符类型,单字符在python中也是作为一个字符串使用

python访问子字符串,可以用方括号[]截取字符串

语法格式如下

1
变量[头下标:尾下标]

例如

1
2
3
4
5
6
7
8
# 访问字符串中的值
str = "湖南科技大学"
print(str[0])
print(str[1])
print(str[:])
print(str[1:4])
print(str[:3])
print(str[1:])

结果

1
2
3
4
5
6


湖南科技大学
南科技
湖南科
南科技大学

字符串运算符

image-20230222112859330

使用案例

1
2
3
4
5
6
7
8
# 字符串运算符
str = "hello"
print(str + "world")
print(str * 2)
print('h' in str)
print('h' not in str)
print(r'\n')
print(R'\n')

结果

1
2
3
4
5
6
helloworld
hellohello
True
False
\n
\n

python三引号

三引号允许一个字符串跨多行使用

例如

1
2
3
4
# python三引号
str = """举杯邀明月,
对饮成三人。"""
print(str)

结果

1
2
举杯邀明月,
对饮成三人。

列表

就是一个简单的线性表数据结构

创建一个列表,

1
list = ['你好', '再见', 4, 3.5]

然后直接输出

1
print(list)

输出结果

1
['你好', '再见', 4, 3.5]

访问列表中的值

正向访问,索引从0开始

1
2
3
4
5
# 列表正向访问
list = ['你好', '再见', 4, 3.5]
print(list[0])
print(list[1])
print(list[2])

输出结果

1
2
3
你好
再见
4

也可以从列表尾部开始访问,最后一个元素索引为-1,往前一位元素索引为-2,以此类推

例如

1
2
3
4
5
# 列表逆向访问
list = ['你好', '再见', 4, 3.5]
print(list[-1])
print(list[-2])
print(list[-3])

结果

1
2
3
3.5
4
再见

列表截取和字符串截取差不多,这里不多赘述

更新列表

可以对列表的数据项进行修改或者更新,可以通过append()方法添加列表项

例如

1
2
3
4
5
# 列表更新
list = ['你好', '再见', 4, 3.5]
list[1] = '好的'
list.append(555)
print(list)

结果

1
['你好', '好的', 4, 3.5, 555]

删除列表元素

可以使用del语句删除列表中的元素

1
2
3
4
# 列表删除
list = ['你好', '再见', 4, 3.5]
del list[2]
print(list)

结果

1
['你好', '再见', 3.5]

元组

元组与列表相似,差别在于元组的元素不能修改

元组使用(),而列表使用[]

创建元组

1
2
3
# 元组创建
tuple = ('你好', '再见', 4, 3.5)
print(tuple)

结果

1
('你好', '再见', 4, 3.5)

访问元组

访问元组的方式和访问列表差不多,这里不多赘述

修改元组

元组的元素值虽然不可以修改,但是我们可以对元组进行连接组合

1
2
3
4
5
# 元组修改
tuple1 = ('你好', '再见')
tuple2 = (4, 3.5)
tuple3 = tuple1 + tuple2
print(tuple3)

结果

1
('你好', '再见', 4, 3.5)

删除元组

元组的元素值虽然不可以删除,但是可以通过del语句来删除整个元组

1
2
3
4
5
# 元组删除
tup = ('你好', '再见', 4, 3.5)
print(tup)
del tup
print(tup)

结果

1
2
3
4
5
Traceback (most recent call last):
File "E:\PythonCode\test1.py", line 189, in <module>
print(tup)
NameError: name 'tup' is not defined
('你好', '再见', 4, 3.5)

字典

字典就是一个map,由多个K-V键值对组成

创建空字典

有两种方式

  1. 使用大括号{}创建空字典
  2. 使用内建函数dist()创建字典

案例演示

1
2
3
# 创建空字典
emptyMap1 = {}
emptyMap2 = dist()

创建字典

1
2
3
# 创建字典
map = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(map)

输出结果

1
{'名称': '湖南科技大学', '地点': '湖南湘潭'}

访问字典里面的值

将相应的键放入到方括号[]中即可

1
2
3
4
# 创建字典
map = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(map['名称'])
print(map['地点'])

结果

1
2
湖南科技大学
湖南湘潭

如果键对应的值不存在就会输出错误信息

例如

1
2
3
# 创建字典
map = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(map['简介'])

结果

1
2
3
4
Traceback (most recent call last):
File "E:\PythonCode\test1.py", line 201, in <module>
print(map['简介'])
KeyError: '简介'

修改字典

往字典添加新内容的方法是增加新的键值对,修改已有键值对示例如下

1
2
3
4
5
6
7
8
9
'''修改字典'''
map = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(map)
# 新增键值对
map['描述'] = '暂无描述'
print(map)
# 修改键值对
map['名称'] = '湘潭大学'
print(map)

结果输出

1
2
3
{'名称': '湖南科技大学', '地点': '湖南湘潭'}
{'名称': '湖南科技大学', '地点': '湖南湘潭', '描述': '暂无描述'}
{'名称': '湘潭大学', '地点': '湖南湘潭', '描述': '暂无描述'}

删除字典

删除字典分为删除其中的键值对或者删除整个字典

案例演示

1
2
3
4
5
6
7
"""删除操作"""
d = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(d)
del d['地点']
print(d)
del d
print(d)

结果输出

1
2
3
4
5
6
7
"""删除操作"""
d = {'名称' : '湖南科技大学', '地点': '湖南湘潭'}
print(d)
del d['地点']
print(d)
del d
print(d)

字典键值特性

字典值可以是任何的python对象,既可以是标准的对象,也可以是用户自定义的,但键不行

两个重要的点

  1. 不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值就会被记住,相当于修改键值对
  2. 键必须不可变,所以可以用数字,字符串或者元组充当,但是列表不行,因为可变

集合

python集合是一个无序的不可重复的序列

可以用大括号{}或者set()函数创建集合,注意创建一个空集合必须使用set()而不是{},因为{}用来创建空字典

案例演示

1
2
3
4
5
6
7
# 创建集合
set1 = set()
set2 = {1, 3, 'hello'}
set3 = set({1, 3, 'hello'})
print(set1)
print(set2)
print(set3)

结果

1
2
3
set()
{1, 3, 'hello'}
{1, 3, 'hello'}

添加元素

使用set集合的add()函数

演示

1
2
3
4
5
# 添加元素
set = {1, 3, 'hello'}
print(set)
set.add('2333')
print(set)

结果

1
2
{1, 3, 'hello'}
{'2333', 1, 3, 'hello'}

还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

1
s.update(x)

演示

1
2
3
4
5
6
7
# 添加元素 update
set = {1, 3, 'hello'}
print(set)
set.update([4, 5])
set.update({6, 7})
set.update({'姓名': '小明'})
print(set)

结果

1
2
{1, 3, 'hello'}
{1, 3, 4, 5, 'hello', 6, 7, '姓名'}

移除元素

使用set集合的remove()方法,元素不存在时会发生错误

演示

1
2
3
4
# 删除元素
set = {1, 3, 'hello'}
set.remove(1)
print(set)

结果

1
{3, 'hello'}

还可以使用set集合的discard()方法,元素不存在时不会发生错误

演示

1
2
3
4
# 删除元素
set = {1, 3, 'hello'}
set.discard(1)
print(set)

结果

1
{3, 'hello'}

也可以使用set集合的pop()方法随机删除一个元素

演示

1
2
3
4
# 删除元素
set = {1, 3, 'hello'}
set.pop()
print(set)

结果

1
{'hello', 3}

计算集合元素个数

使用len()函数

1
2
3
# 计算元素集合个数
set = {1, 2, 3}
print(len(set))

结果

1
3

清空集合

使用clear()函数

1
2
3
4
# 清空集合元素
set = {1, 2, 3}
set.clear()
print(set)

结果

1
set()

判断元素是否在集合中存在

使用in关键字

1
2
3
4
# 判断元素是否在集合中
set = {1, 2, 3}
print(1 in set)
print(4 in set)

结果

1
2
True
False

条件控制

条件控制语句if-elif-else 格式一般如下

1
2
3
4
5
6
7
8
9
10
# 条件控制
if 条件1:
代码块1
elif 条件2
代码块2
elif 条件3:
代码块3
……
else 条件4:
代码块4

注意

  1. 每个条件后面要使用:,表示接下来要满足条件后要执行的语句块

  2. 使用缩进来划分语句块,相同缩进数的语句组成一个语句块

  3. if-elif-else语句可以嵌套

分支判断语句match...case格式一般如下

1
2
3
4
5
6
7
8
9
10
match 变量:
case 值一:
动作
case 值二:
动作
case 值三:
动作
……
case _:
上面没有匹配时执行的动作

循环语句

while循环

基本格式为

1
2
while 循环条件:
执行语句

python中没有do-while循环

while-else语句格式

1
2
3
4
while 循环条件:
表达式1
else:
表达式2

当循环条件为True时则进行循环,循环条件为False时则执行else语句块

for循环语句语句格式

1
2
for 变量 in 容器:
表达式

for-else循环语句语句格式

1
2
3
4
for 变量 in 容器:
表达式1
else
表达式2

python中也有break、continue,用法同Java,只是python中的match-case没有穿透问题,不需要break

pass表示空语句,不做任何事情,一般做占位使用,等待键盘中断(CTRL + C)

range函数

range函数用于快速生成一个数字序列,然后可以配合for循环打印出这个序列中的数字

用法如下

range(x) 表示 0~x-1的数字序列

1
2
3
# range(x) 表示 0~x-1的数字序列
for num in range(3):
print(num)

结果

1
2
3
0
1
2

range(m, n)表示m~n-1的数字序列

1
2
3
# range(m, n)表示m~n-1的数字序列
for num in range(2, 5):
print(num)

结果

1
2
3
2
3
4

range(begin, end, step)

begin表示起始数字值

end-1表示结束数字值

step表示步长

这么说有一点抽象,演示一下就好了

1
2
3
# range(begin, end, step)
for num in range(3, 20, 4):
print(num)

结果

1
2
3
4
5
3
7
11
15
19

迭代器

迭代是python最强大的功能之一,是访问集合元素的一种方式

迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束,迭代器只能往前不能后退

创建迭代器iter()与使用迭代器遍历next()

1
2
3
4
5
6
# 创建迭代器与使用迭代器遍历
set = {1, 3, 2}
it = iter(set)
print(next(it))
print(next(it))
print(next(it))

也可以使用for语句进行遍历

1
2
3
4
5
# 使用for进行遍历
set = {1, 2, 3}
it = iter(set)
for e in it:
print(e)

结果

1
2
3
1
2
3

函数