变量与赋值
python是弱数据类型语言,变量可以接收任何类型的数值,数据是什么类型,变量就是什么类型
赋值即定义变量,变量必须先赋值后使用
基本赋值
赋值演示
1 2 3 4 x = 3 y = 5.2 print (x, y)
输出
链式赋值
1 2 3 x = y = z = 7 print (x, y, z)
输出
解包赋值
1 2 3 a, b = 100 , 200 print (a, b)
输出
解包赋值可以实现两个变量值的交换
解包赋值交换演示
1 2 3 4 5 a = 3 b = 4 a, b = b, aprint (a, b)
输出
输入输出
输入函数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 i = input ("请输入: " )print (type (i)) i = int (i)print (type (i))
输出结果
1 2 3 请输入: 2 <class 'str'> <class 'int'>
表达式解析
还有一种输入方式,称为表达式解析
通过一个内置的函数eval(),将用户输入的字符串解析为表达式(单个数据 也是表达式),若表达式可计算,则计算后返回其值
格式为变量 = eval(input("提示字符串"))
可认为eval是去掉接收到的字符串的引号
样例演示
1 2 3 c = eval (input ("请输入: " ))print (c)
输出结果
输出函数print
def print(self, *args, sep=' ', end='\n', file=None)
参数说明
sep: 输出表达式之间的间隔字符串,默认是空格
end:输出表达式的结尾字符串,默认是换行
案例演示
1 2 3 4 5 a = b = c = 1 print (a, b, c)print (a, b, c, sep='#' )print (a, b, c , '\n\n' , end="换行" )
输出结果
格式化输出
这块使用方法和c语言格式化输出差不多
整数格式化演示
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 * rprint ("{:.2f}" .format (pi))print ("半径: {0:<3d}, 面积: {1:10.3f}" .format (r, area))
结果
f-string简化输出
格式:f带占位大括号的字符串
1 2 3 4 5 r = 3 pi = 3.1415926 print (f"{pi} " )print (f"圆周率: {pi: <.2 f} , 面积: {pi * r * r :10.3 f} " )
结果
1 2 3.1415926 圆周率: 3.14, 面积: 28.274
注释
单行注释
单行注释以#
开头
例如
多行注释
多行注释用三个单引号'''
或者"""
将注释括起来
例如
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 )
结果
浮点型
浮点数(实数)是指带小数的数字,如3.14、4.、.5
还有一种表示浮点数的方式——科学计数法:-27.3e2
Python中能使用的只有十进制浮点数。
Python浮点数有长度限制,超过上下限会导致溢出错误。
浮点数不一定能精确表示小数,精度有限。
演示
1 2 3 4 print (3.9 )print (100.0 * 100 )print (-27.3e2 )
结果
复数型
使用 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 str1 = 'hello' str2 = "hello"
访问字符串中的值
python不支持单字符类型,单字符在python中也是作为一个字符串使用
python访问子字符串,可以用方括号[]
截取字符串
语法格式如下
例如
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 湖 南 湖南科技大学 南科技 湖南科 南科技大学
字符串运算符
使用案例
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 str = """举杯邀明月, 对饮成三人。""" print (str )
结果
列表
就是一个简单的线性表数据结构
创建一个列表,
1 list = ['你好' , '再见' , 4 , 3.5 ]
然后直接输出
输出结果
访问列表中的值
正向访问,索引从0开始
1 2 3 4 5 list = ['你好' , '再见' , 4 , 3.5 ]print (list [0 ])print (list [1 ])print (list [2 ])
输出结果
也可以从列表尾部开始访问,最后一个元素索引为-1
,往前一位元素索引为-2
,以此类推
例如
1 2 3 4 5 list = ['你好' , '再见' , 4 , 3.5 ]print (list [-1 ])print (list [-2 ])print (list [-3 ])
结果
列表截取和字符串截取差不多,这里不多赘述
更新列表
可以对列表的数据项进行修改或者更新,可以通过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 2 3 tuple = ('你好' , '再见' , 4 , 3.5 )print (tuple )
结果
访问元组
访问元组的方式和访问列表差不多,这里不多赘述
修改元组
元组的元素值虽然不可以修改,但是我们可以对元组进行连接组合
1 2 3 4 5 tuple1 = ('你好' , '再见' ) tuple2 = (4 , 3.5 ) tuple3 = tuple1 + tuple2print (tuple3)
结果
删除元组
元组的元素值虽然不可以删除,但是可以通过del
语句来删除整个元组
1 2 3 4 5 tup = ('你好' , '再见' , 4 , 3.5 )print (tup)del tupprint (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键值对组成
创建空字典
有两种方式
使用大括号{}
创建空字典
使用内建函数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 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 dprint (d)
结果输出
1 2 3 4 5 6 7 "" "删除操作" "" d = {'名称' : '湖南科技大学' , '地点' : '湖南湘潭' }print (d) del d['地点' ]print (d) del dprint (d)
字典键值特性
字典值可以是任何的python对象,既可以是标准的对象,也可以是用户自定义的,但键不行
两个重要的点
不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值就会被记住,相当于修改键值对
键必须不可变,所以可以用数字,字符串或者元组充当,但是列表不行,因为可变
集合
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 2 3 4 5 6 7 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 )
结果
还可以使用set
集合的discard()
方法,元素不存在时不会发生错误
演示
1 2 3 4 set = {1 , 3 , 'hello' }set .discard(1 )print (set )
结果
也可以使用set
集合的pop()
方法随机删除一个元素
演示
1 2 3 4 set = {1 , 3 , 'hello' }set .pop()print (set )
结果
计算集合元素个数
使用len()
函数
1 2 3 set = {1 , 2 , 3 }print (len (set ))
结果
清空集合
使用clear()
函数
1 2 3 4 set = {1 , 2 , 3 }set .clear()print (set )
结果
判断元素是否在集合中存在
使用in
关键字
1 2 3 4 set = {1 , 2 , 3 }print (1 in set )print (4 in set )
结果
条件控制
条件控制语句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
注意
每个条件后面要使用:
,表示接下来要满足条件后要执行的语句块
使用缩进来划分语句块,相同缩进数的语句组成一个语句块
if-elif-else
语句可以嵌套
分支判断语句match...case
格式一般如下
1 2 3 4 5 6 7 8 9 10 match 变量: case 值一: 动作 case 值二: 动作 case 值三: 动作 …… case _: 上面没有匹配时执行的动作
循环语句
while
循环
基本格式为
python中没有do-while
循环
while-else
语句格式
1 2 3 4 while 循环条件: 表达式1 else : 表达式2
当循环条件为True时则进行循环,循环条件为False时则执行else语句块
for
循环语句语句格式
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 for num in range (3 ): print (num)
结果
range(m, n)表示m~n-1的数字序列
1 2 3 for num in range (2 , 5 ): print (num)
结果
range(begin, end, step)
begin表示起始数字值
end-1表示结束数字值
step表示步长
这么说有一点抽象,演示一下就好了
1 2 3 for num in range (3 , 20 , 4 ): print (num)
结果
迭代器
迭代是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 set = {1 , 2 , 3 } it = iter (set )for e in it: print (e)
结果
函数