复习一下:Python基础知识学习
菜鸟教程:Python3 基础语法 | 菜鸟教程 (runoob.com)
一、数据类型
1、Number(数字)
(1)数字类型
Python包括4种数字类型:int、float、bool、complex(复数)
1 2.0 True 1+2j
注:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
(2)强制类型转换
int(x) #将x转换为一个整数。
float(x) #将x转换到一个浮点数。
complex(x) #将x转换到一个复数,实数部分为 x,虚数部分为 0。
complex(x, y) #将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。
(3)数字运算
#算术运算符 :+ - * / % ** //
#比较(关系)运算符 : == != > < >= <=
#赋值运算符 : = += -= *= /= %= **= //= :=(海象运算符,可在表达式内部为变量赋值。Python3.8 版本新增运算符。)
#位运算符 : & | ^(异或) ~ << >>(按位左移和按位右移)
#逻辑运算符 :and or not
#成员运算符 :in not in 测试实例中是否包含另一成员
#身份运算符 :is not is
2、String(字符串)
我们可以使用引号( ' 或 " )来创建字符串
'Hello World!'
"Hello World!"
(1)访问字符串
可以使用 [ ]来截取字符串,索引值从 0 开始,-1 结尾。
str = 'Hello'
#字符串截取
str[0]是'H' ,str[-1]是'o'
str[:]是'Hello'
str[0:]是'Hello'
str[:4]是'Hello'
str[2:4]是'll' 左闭右开
(2)转义字符以及字符串运算
转义字符
\在行末尾时表示续行符
\n换行符
\r \f \v \t等等
字符串运算
# + * in not in
a = 'Hello'
b = 'Python'
>>> a + b
'HelloPython'
>>> a * 2
'HelloHello'
>>> 'H' in a
True
(3)字符串格式化
常用的有% s 和%d %f
%s格式化字符串
%d格式化整数
%f格式化浮点数
print ("我叫 %s 今年 %d 岁!" % ('小明', 15))
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
>>> name = '小明'
>>> f'Hello {name}' # 替换变量
'Hello 小明'
3、List(列表)
列表数据项不需要具有相同的类型,而且我们常常需要对列表进行索引和切片等操作。列表可以嵌套列表。
list = ['Google', 'Runoob', 1997, 2000,'red','a']
(1)访问列表
列表的访问非常类似字符串,第一个列表元素是List[0],依次是List[1],List[2]。
list = ['Google', 'Runoob', 1997, 2000,'red','a']
#列表索引
list[0] = 'Google'
list[1] = 'Runoob'
#列表截取
list[0:4] = ['Google', 'Runoob', 1997, 2000]
(2)更新列表
我们可以对被定义的列表进行更新,比如:删除、添加、更改
list = ['Google', 'Runoob', 1997, 2000,'red','a']
#删除列表元素
>>>del list[5] #表示删除列表中第六个元素
>>>print(list)
['Google', 'Runoob', 1997, 2000,'red']
#更改列表元素
>>>list[1] = 'Baidu'
>>>print(list)
['Google', 'Baidu', 1997, 2000,'red']
#添加列表元素
>>>list.append('Huohu') #在列表的末尾添加元素
>>>print(list)
['Google', 'Baidu', 1997, 2000,'red','Huohu']
列表运算:列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。
>>>[1, 2, 3] + [4, 5, 6]
[1, 2, 3, 4, 5, 6]
>>>['Hi!'] * 4
['Hi!', 'Hi!', 'Hi!', 'Hi!']
>>>3 in [1, 2, 3]
True
(3)列表函数
len(list) #列表元素个数
max(list) #返回列表元素最大值
min(list) #返回列表元素最小值
list(seq) #将元组转换为列表
list.append(obj) #在列表末尾添加新的对象
list.count(obj) #统计某个元素在列表中出现的次数
list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) #将对象插入列表
list.pop([index=-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) #移除列表中某个值的第一个匹配项
list.reverse() #反向列表中元素
list.sort(key=None,reverse=False) #对原列表进行排序,reverse = True 降序, reverse = False 升序(默认)
list.clear() #清空列表
list.copy() #复制列表
4、Tuple(元组)
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号 ( ),列表使用方括号 [ ]。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
#创建空元组,元组中只包含一个元素时,需要在元素后面添加逗号
tup = ()
(1)访问元组
元组的访问和截取与列表一样,请参考列表。
(2)更新元组
元组中的元素值是不允许修改的,但可以对元组进行连接和删除。
#元组拼接
tup1 = (12, 34.56)
tup2 = (78, 910)
tup3 = tup1 + tup2
print (tup3)
(12,34,56,78,910)
#元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组
del tup
(3)元组函数
(1, 2, 3) + (4, 5, 6)
(1, 2, 3, 4, 5, 6) #连接
('Hi!',) * 4
('Hi!', 'Hi!', 'Hi!', 'Hi!') #复制
3 in (1, 2, 3)
True #元素是否存在
len(tuple) #计算元组元素个数。
max(tuple) #返回元组中元素最大值。
min(tuple) #返回元组中元素最小值。
tuple(iterable) #强制类型转换。
5、Set(集合)
集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合。
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合的基本操作
#添加元素
s.add(x) #添加元素x到集合 s 中,如果元素已存在,则不进行任何操作。
s.update(x) #添加参数X到集合 s 中,参数可以是元素,列表,元组,字典等
#移出元素
s.remove(x) #如果元素不存在,则会发生错误
s.discard(x) #如果元素不存在,不发生错误
s.pop() #设置随机删除集合中的一个元素
#计算集合元素个数
len(s)
#清空集合
s.clear()
#判断元素是否在集合中
x in s
6、Dictionary(字典)
字典可存储任意类型对象,由键值对key=>value 组成,key=>value对内用冒号 : 分割,外用逗号,分开。
dict = {key1 : value1,
key2 : value2,
key3 : value3 }
键是唯一的,是不可变动的,而值是可以改变的。
#student 1
student_01 = {'name':'YunYing',
'age':18,
'job':'cike'}
#student 2
student_02 = {'name':'ZhangLiang',
'age':20,
'job':'fashi'}
#student 3
student_03 = {'name':'CaiWenji',
'age':10,
'job':'fuzhu'}
(1)字典的基本操作
#访问字典值
student_01 = {'name':'YunYing',
'age':18,
'job':'cike'}
>>>student_01['name']
#修改字典
#将某个值赋给字典的键
>>>student_01['name'] = 'HuaMulan'
#添加键值对
>>>student_01['attact'] = 'liaoyuanbaizhan'
#删除字典元素和清空字典
del student_01['name']
student.clear()
del student_01
注:
①不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
②键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
(2)遍历字典
遍历字典
#遍历字典
print(student_01.items()) #student_01.items()可以遍历字典,生成一个以键值对列表为元素的元组
for k,v in student_01.items():
print('Key:' + str(k))
print('Value:' + str(v))
遍历字典中的键
#遍历字典中的键
print(student_01.keys())
for k in student_01.keys():
print('Key:' + k)
遍历字典中的值
#遍历字典中的值
print(student_01.values())
for v in student_01.values():
print('value:' + str(v))
(3)字典嵌套
列表中嵌套字典
#列表中嵌套字典
#比如我想展示所有出现的英雄信息
student_01 = {'name':'YunYing','age':18,'job':'cike'}
student_02 = {'name':'ZhangLiang','age':20,'job':'fashi'}
student_03 = {'name':'CaiWenji','age':10,'job':'fuzhu'}
student_04 = {'name':'ZhuangZhou','age':20,'job':'fuzhu'}
student_05 = {'name':'JiaLuo','age':24,'job':'sheshou'}
students = [student_01,student_02,student_03,student_04,student_05]
for student in students:
print(student)
字典中嵌套列表
#字典中嵌套列表
#比方说云缨,我想知道云缨的所有的攻击技能
student_01 = {'name':'YunYing',
'age':18,
'job':'cike',
'attact':['zhuiyun','zhuxing','duanyue','jianyi','ruiyi','zhenyi',]}
即某一个键的特性需要用不止一个值来描述,往往会嵌套列表。
字典中嵌套字典
Heros = {
'YunYing':{'age':18,'job':'cike'},
'ZhangLiang':{'age':20,'job':'fashi'},
'CaiWenji':{'age':10,'job':'fuzhu'},
'ZhuangZhou':{'age':20,'job':'fuzhu'}
}
二、三大语句
1、if语句
(1)一般形式
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
(2)嵌套形式
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
2、while循环语句
while 判断条件(condition):
执行语句(statements)……
Python没有do while循环,并且可以通过while 1进入无限循环,Ctrl+c退出无限循环。
3、for循环语句
for <variable> in <sequence>:
<statements>
需要遍历数字序列时,可以使用内置range()函数
>>>for i in range(5):
print(i)
>>> for i in range(len(a)):
print(i, a[i])
break 语句可以跳出 for 和 while 的循环体。
continue 语句跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
三、函数
编写程序代码时,比如实现某一功能需要多行代码实现,但是该功能在整个程序中多次出现,那么我们就需要多次书写这几行重复的代码,为保持代码的简洁与可读性,我们通过封装这几行代码的函数和调用函数来避免这种情况。函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
1、函数定义
def 函数名(参数列表):
函数体
#举例
def div(Beichushu,chushu):
'''
函数说明:判断被除数是否可以被除数整除
'''
if Beichushu%chushu == 0:
return True;
else:
return False;
div(4,2)
2、函数调用与参数传递
函数定义好之后,可以在其他代码或者其他函数中调用该函数(通过调用函数名和传递参数)。
Beichushu = 168
chushu = 6
print(div(Beichushu, chushu))
- 位置实参
位置实参要求以正确的顺序传入函数,调用时的数量必须和声明时的一样。
#比如我们想判断168是否可以整除6,
div(168,6)
#如果参数位置传递错误
div(6,168)
- 关键字实参
关键字实参是传递给函数“形参=实参”对,在参数传递时将名称和参数值关联起来,允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
div(chushu = 6,Beichushu = 168)
- 默认参数
调用函数时,如果没有传递参数,则会使用默认参数(默认参数指在函数定义时赋给参数的值)。
- 不定长参数
我们可能需要一个函数能处理比当初声明时更多的参数
def functionname([formal_args,] *var_args_tuple ):
"函数_文档字符串"
function_suite
return [expression]
加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。