目录
random.choice()和random.shuffle()函数
一,六种数据类型及之间的相互转换
1.六种数据类型
数据类型 | 名称 |
number | 数字 |
string | 字符串 |
list | 列表 |
tuple | 元组 |
dictionary | 字典 |
set | 集合 |
注意:
number(数字)中包含3种数值类型:
1.整型(int) 整型就是整数,包括正整数、负整数、零,不带小数点。
2.浮点型(float) 浮点型由整数部分与小数点组成,必须包含小数点。
3.布尔型(bool) 布尔型是一种表示逻辑值的简单类型,只有俩个值,一个为 True(真,1),另一个为False(假,0)。
注意:如果不知道某一变量的数据类型是什么,可以通过type()函数查询
2.相互转换
-
整数(int)转换:
- 转换为整数:使用函数将其他数据类型(如浮点数、字符串等)转换为整数。例如:
int()
num_float = 10.5 int_num = int(num_float) # 转换为整数
- 转换为整数:使用函数将其他数据类型(如浮点数、字符串等)转换为整数。例如:
-
浮点数(float)转换:
- 转换为浮点数:使用函数将其他数据类型(如整数、字符串等)转换为浮点数。例如:
float()
num_int = 10 float_num = float(num_int) # 转换为浮点数
- 转换为浮点数:使用函数将其他数据类型(如整数、字符串等)转换为浮点数。例如:
-
字符串(str)转换:
- 转换为字符串:使用函数将其他数据类型(如整数、浮点数、布尔值等)转换为字符串。例如:
str()
num = 100 str_num = str(num) # 转换为字符串
- 转换为字符串:使用函数将其他数据类型(如整数、浮点数、布尔值等)转换为字符串。例如:
-
布尔值(bool)转换:
- 转换为布尔值:可以使用函数将其他数据类型转换为布尔值。通常,0、空字符串、空列表、空字典等被视为,而其他非零、非空值被视为。例如:
bool()
False
True
val = 0 bool_val = bool(val) # 转换为布尔值
- 转换为布尔值:可以使用函数将其他数据类型转换为布尔值。通常,0、空字符串、空列表、空字典等被视为,而其他非零、非空值被视为。例如:
-
列表(list)转换:
- 转换为列表:使用函数将其他数据类型(如元组、字符串等)转换为列表。例如:
list()
tuple_data = (1, 2, 3) list_data = list(tuple_data) # 转换为列表
- 转换为列表:使用函数将其他数据类型(如元组、字符串等)转换为列表。例如:
-
元组(tuple)转换:
- 转换为元组:使用函数将其他数据类型(如列表、字符串等)转换为元组。例如:
tuple()
list_data = [1, 2, 3] tuple_data = tuple(list_data) # 转换为元组
- 转换为元组:使用函数将其他数据类型(如列表、字符串等)转换为元组。例如:
二,变量,字符串,运算符
1,变量
- 变量名只能包含字母、数字和下划线。变量名能以字母或下划线打头,但不能以数 字打头。例如,可将变量命名为message_1 ,但不能将其命名为1_message 。
- 变量名不能包含空格,但能使用下划线来分隔其中的单词。例如,变量名 greeting_message 可行,但变量名greeting message 会引发错误。
- 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的 单词,如print 。
- 变量名应既简短又具有描述性。例如,name 比n 好,student_name 比s_n 好,name_length 比length_of_persons_name 好。 慎用小写字母l 和大写字母O ,因为它们可能被人错看成数字1 和0 。
举个例子
message = "Hello Python world!"
print(message)
message = "Hello Python Crash Course world!"
print(message)
2,字符串
-
转义字符
转义字符 | 输出为 |
---|---|
\' | ' |
\" | " |
\t | 制表符 |
\n | 换行符 |
\\ |
|
-
字符串的索引、切片与逆序
"Hello , world!"这个字符串中有13个字符(字符串的计数包含空格和符号) 注意:索引从0开始
H e l l o , w o r l d !
0 1 2 3 4 5 6 7 8 9 10 11 12
H的索引就是0,!的索引就是12 ,
首先,我们需要定义一个变量a使它="Hello , world!" 获取单个字符w时可以使用变量名[索引]
>>>a = "Hello , world!"
>>>print(a[7])
w
如果此时我们只想获得world这个字符串,那么可以使用切片 切片时我们可以使用变量名[起始索引:结束索引+1:间隔个数] 起始索引默认为0,结束索引默认为最后,间隔个数默认为1,若为默认时可以省略
>>>a = "Hello , world!"
>>>print(a[7:12])
world
>>>print(a[7:12:2])
wrd
此时我们想要逆序输出world,即输出"dlrow" ,只需要使用变量名[结束索引:开始索引-1:-1]
>>>a = "Hello , world!"
>>>print(a[11:6:-1])
dlrow
>>>print(a[11:6:-2])
drw
注意:为什么是结束索引+1和开始索引-1? Python中所有的区间都是左闭右开的,所以右边的数取不到,要想取到右边的数只有将右边的数向右再延伸一个即加一。至于为何逆序就要减一,你可以把字符串反过来看,即
! d l r o w , o l l e H
12 11 10 9 8 7 6 5 4 3 2 1 0
同样是从d开始切片,切到w结束,按照左闭右开,需要再往右延伸一个,即减一。
-
字符串的in和not in 操作符
in | not in |
---|---|
判断某个字符或字符串是否在字符串中 | 判断某个字符或字符串是否不在字符串中 |
输出值可为布尔值,即True 和 False
-
字符串的连接
使用"+"连接
>>>a = "Hello "
>>>b = "world"
>>>print(a+b)
Hello world
>>>name = "xiaobian"
>>>age = 18
>>>print("My name is " + name +".I am "+ str(age) + " years old.")
My name is xiaobian.I am 18 years old.
注意:str(age)这里需要将age转换成字符串,否则系统会报错,此时age是整型不能与字符串同时输出。
-
字符串方法
方法 | 使用方法 | 作用 |
---|---|---|
upper() | 字符串.upper() | 将字符串里的字符全部大写 |
lower() | 字符串.lower() | 将字符串里的字符全部小写 |
isupper() | 字符串.isupper() | 字符串中字符是否都是由大写字母组成 |
islower() | 字符串.islower() | 字符串中字符是否都是由小写字母组成 |
isdigit() | 字符串.isdigit() | 字符串中是否都是由数字组成 |
isnumeric() | 字符串.isnumeric() | 字符串中字符是否都是由数字字符组成 |
isalpha() | 字符串.isalpha() | 字符串中是否都是由字母组成,并且非空 |
isalnum() | 字符串.isalnum() | 字符串中是否都是由字母和数字组成,并且非空 |
isdecimal() | 字符串.isdecimal() | 字符串中是否都是由数字字符组成,并且非空 |
isspace() | 字符串.isspace() | 字符串中是否都是由空格、制表符和换行符组成,并且非空 |
istitle() | 字符串.istitle() | 字符串中是否以大写字母开头、后面都是小写字母的单词、数字或空格 |
find() | 字符串.find(字符,起始位置,结束位置) | 查找指定字符在字符串中的位置(索引)(找不到则返回-1) |
index() | 字符串.index(字符,起始位置,结束位置) | 查找指定字符在字符串中的位置(索引)(找不到会报错) |
count() | 字符串.count(字符) | 统计指定字符出现的次数 |
replace() | 字符串.replace(字符,新字符,替换次数) | 用于字符串的修改 |
split() | 字符串.split(分隔符,分割次数) | 拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表。 |
join() | 分隔符.join(序列) | 返回一个用分隔符连接序列各个元素后的字符串(注:分隔符可以为空) |
title() | 字符串.title() | 字符串内的所有单词的首字母大写 |
capittalize() | 字符串.capittalize() | 字符串第一个字母大写 |
startswith() | 字符串1.startswith(字符串2) | 字符串2是否以字符串开始 |
endswith() | 字符串1.endswith(字符串2) | 字符串2是否以字符串结束 |
partition() | 字符串.partition(字符串中片段) | 以字符串中片段为分隔符分隔字符串 |
rjust() | 字符串.rjust(数字,'填充字符') | 右对齐字符串,左边填充上‘填充字符’,总字符长度为‘数字’ |
ljust() | 字符串.ljust(数字,'填充字符') | 左对齐字符串,右边填充上‘填充字符’,总字符长度为‘数字’ |
center() | 字符串.center(数字,'填充字符') | 字符串居中,两边填充上‘填充字符’,总字符长度为‘数字’ |
strip() | 字符串.strip(空格、制表符、换行符和字符串参数) | 删除字符串两边所选字符 |
rstrip() | 字符串.rstrip(空格、制表符、换行符和字符串参数) | 删除字符串右边所选字符 |
lstrip() | 字符串.lstrip(空格、制表符、换行符和字符串参数) | 删除字符串左边所选字符 |
注意:作用中有关是否的方法中,若符合则返回True,不符合则返回False
3,运算符
运算符分为逻辑运算符,算术运算符,赋值运算符和比较运算符 其中的优先级为:
1.逻辑运算符:and or not
2.算术运算符: * / % // + -
3.比较运算符:<= < > >= == !=
4.赋值运算符:= %= /= //= -= += *= **=
算术运算符 > 比较运算符 > 赋值运算符
注意:
1.将任意两个数相除时,结果总是浮点数,即使这两个数都是整数且能整除。
>>>a = 4
>>>print(a/2)
2.0
2.在其他任何运算中,如果一个数是整数,另一个数是浮点数,结果也是浮点数。
>>>a = 1
>>>b = a + 2.0
>>>print(b)
3.0
- 逻辑运算符
运算符 | 意义 | 例子 |
---|---|---|
and | “与”运算符,一假为假,全真为真 | a and b |
or | “或”运算符,一真为真,全假为假 | a or b |
not | “非”运算符,为真则假,为假则真 | not a not(a and b) |
注意:Python中的and和&有区别,不能混用
and:逻辑运算符。比如加减乘除符号有各自对用的运算规则,作为逻辑运算符也得遵守相应的规则。
&:位运算符,是按位进行逻辑运算,将操作数转化为对应的的二进制进行逻辑运算,运算结果再转化为原来的进制。
三,判断语句和循环语句
1,判断语句
- 判断语句句法
1.if 判断条件 :
语句
2.if 判断条件:
语句
else:
语句
3.if 判断条件:
语句
elif 判断条件:
语句
……
else:
语句
例如:定义一个整数变量age,编写代码判断输入的年龄是否正确。要求人的年龄在0-120之间。
age = int(input())
if age > 120:
print("年龄太高,输入错误!")
elif age > 70:
print("老年人")
elif age > 40:
print("壮年")
elif age > 16:
print("青年")
elif age > 0:
print("儿童")
else:
print("该人不存在!!")
注意:Python里面没有switch语句!!
2,循环语句
循环语句主要分为while语句和for语句
-
while 语句
while语句由三部分组成:
1.while
2.条件表达式和冒号
3.当条件表达式结果为真时要执行的循环体
while语句句法:
while 表达式:
循环体
-
for循环
for语句句法:
for 循环变量 in 遍历对象(序列):
循环体
for 循环,从形式上可以分为两种:
1.遍历对象
2.使用range函数控制循环次数 range函数: range(起始值,终止值,步长) 步长 :每次循环序列增长值,默认值为1,为1时可以省略 例如:输出1-10内所有的奇数和偶数
>>>#使用while循环
>>>i = 1
>>>while i <= 10:
>>> if i % 2 == 0:
>>> print(f"偶数:{i}")
>>> if i % 2 == 1:
>>> print(f"奇数:{i}")
>>> i += 1
奇数:1
偶数:2
奇数:3
偶数:4
奇数:5
偶数:6
奇数:7
偶数:8
奇数:9
偶数:10
>>>#使用for循环
>>>for i in range(1,11):
>>> if i % 2 == 0:
>>> print(f"偶数:{i}")
>>> if i % 2 == 1:
>>> print(f"奇数:{i}")
奇数:1
偶数:2
奇数:3
偶数:4
奇数:5
偶数:6
奇数:7
偶数:8
奇数:9
偶数:10
#
四,列表
1.列表操作
列表操作 | 示范 |
---|---|
创建一个空列表 | a = [ ] |
访问列表中的某个元素 | a[索引] |
访问列表的最后一个元素 | a[-1] |
列表的切片和逆序是a[ : : ]和a[ : :-1],同时别忘记逆序时开始索引与结束索引的位置。
2.列表方法
操作 | 方法 | 描述 |
---|---|---|
增 | 列表.append(元素) | 在列表末尾添加一个元素 |
增 | 列表.extend(序列) | 在列表末尾追加一个序列 |
增 | 列表.insert(索引,元素) | 在列表对应的索引插入元素 |
删 | del 列表[索引] | 删除列表中对应索引的元素 |
删 | 列表.pop(索引) | 删除列表中对应索引的元素,并返回删除的元素,默认最后一个 |
删 | 列表.remove(元素) | 删除列表中对应元素的第一个匹配项 |
删 | 列表.clear() | 清空列表 |
改 | 列表[索引]=新元素 | 将列表对应索引的元素,修改为新元素 |
查 | 列表.index(元素) | 返回元素对应的索引 |
3.列表推导式
例如:输出列表,里面包括从1-20 输出列表,里面包括1-20中所有偶数
>>>a = [x for x in range(1,21)]
>>>print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
>>>b = [x for x in range(1,21) if x%2 == 0]
>>>print(b)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
4.列表函数
-
len()函数
len()函数可以取得列表的长度
>>>a = [11,22,33,44,55]
>>>print(len(a))
5
-
连接与复制
像字符串一样,+操作符可以连接两个列表,得到一个新的列表;*操作符可以用于一个列表和一个整数,实现列表的复制
>>>a = [1,2,3]
>>>b = ['A','B','C']
>>>print(a+b)
>>>print(a*3)
[1, 2, 3, 'A', 'B', 'C']
[1, 2, 3, 1, 2, 3, 1, 2, 3]
-
sum()函数
sum()函数可以将列表中所有数相加
>>>a = [11,22,33]
>>>print(sum(a))
66
-
in 和not in 操作符
列表的in 和 not in 操作符与字符串的用法类似
in | not in |
---|---|
判断某个元素是否在列表中 | 判断某个元素是否不在列表中 |
判断某个字符或字符串是否在字符串中 | 判断某个字符或字符串是否不在字符串中 |
输出值可为布尔值,即True 和 False
-
enumerate()函数
在for循环中迭代,每次enumerate()函数将返回两个值:列表表项的索引和列表表项本身。
-
random.choice()和random.shuffle()函数
random.choice()函数将从列表中返回一个随机选择的表项。
random.shuffle()函数将对列表中的表项重新排序。该函数将就地修改列表,而不是返回新列表。**
-
排序
1.sort():可以对列表进行永久排序
列表.sort(reverse=True/False)
2.sorted()可以对列表进行临时排序
sorted(列表名,reverse=True/False)
reverse=True 时,按降序排序。
reverse=False 时,按升序排序。
-
多重赋值
使用多重赋值是一种快捷方式,在一行代码中,用列表中的值为多个变量赋值。 所以,不用输入以下代码
>>>cat = ['fat','black','loud']
>>>size = cat[0]
>>>color = cat[1]
>>>disposition = cat[2]
而是通过以下代码实现
>>>cat = ['fat','black','loud']
>>>size,color,disposition = cat
五,元组
1,元组操作
列表操作 | 示范 |
---|---|
创建一个空元组 | a =() |
创建包含一个元素的元组 | b =(元素,) |
创建元组 | c =(元素1,元素2,……) |
注意:包含一个元素的元组必须有逗号
2,元组的访问
获取一个元素 | 元组序列[所有] |
---|---|
获取多个连接的元素 | 元组序列[开始索引,结束索引] |
注意:元组是不可以修改的,包括不能删除其中的元素。元组内的直接数据如果修改则立即报错。但是,如果元组里面有列表,修改列表里面的数据不会报错。
3,元组的函数
函数 | 作用 |
---|---|
index() | 从元组中找出某个对象第一个匹配项的下标位置。 |
count() | 统计某个元素在元组中出现的次数 |
len() | 计数元组元素的个数,并返回值 |
max() | 返回元组中元素的最大值 |
min() | 返回元组中元素的最小值 |
注意:元组除了两个方面,元组的数据类型几乎和列表数据类型一样:
1.元组输入时用圆括号(),不是方括号[ ]
2.元组的值无法修改、添加或删除。
六,字典
1,字典操作
字典操作 | 代码示范 |
---|---|
创建空字典 | dict1 = {}/dict2 = dict() |
创建字典 | dict3 = { 键1 :值1 ,键2: 值2,……} |
例如:dict3 = {'name': '小编', 'age': 18}
2,特点
1.符号为大括号{}
2.数据为键值对形式出现
3.各个键值对之间用逗号隔开
3,字典方法
-
字典访问
操作 | 代码示范 | 描述 |
---|---|---|
访问值 | 字典序列[键] | 访问已知键所对应的值 |
修改值 | 字典序列[键]=新值 | 修改已知键的值 |
添加键值对 | 字典序列[新键]=新值 | 添加新的键值对 |
删 | del 字典序列[键] | 删除字典中对应的键的键值对 |
删 | del 字典序列 | 删除字典 |
删 | 字典序列.clear() | 清空字典 |
查 | 字典序列.items() | 查找字典的所有的键值对 |
查 | 字典序列.keys() | 查找字典的所有的key(键) |
查 | 字典序列.values() | 查找字典的所有的value(值) |
- 使用enumerate()函数枚举键值对
enumerate(序列, start=0)
其中start = 0为默认开始值为0
- get()方法
get()方法有两个参数,分别为要取得其值的键,以及当该键不存在时返回的备用值。
>>>a = {'apple':2,'banana':3}
>>>print('I have '+str(a.get('orange',0))+' oranges.')
I have 0 oranges.
>>>print('I have '+str(a.get('apple',0))+' apples.')
I have 2 apples.
-
setdefault()方法
你常常需要为字典中的某个键设置一个默认值,当该键没有任何值时使用它。
而 setdefault()方法提供了一种方式,可以在一行中完成这件事。
传递给该方法的第一个参数是要检查的键,第二个参数是当该键不存在时要设置的值。
如果该键存在,那么 setdefault()方法就会返回键的值
>>>a = {'apple':2,'banana':3}
>>>print(a.setdefault('orange',10))
10
>>>print(a.setdefault('apple',10))
2
七,集合
可以使用大括号 { } 或者 set() 函数创建集合,
但创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合特点:
1.集合是一个无序的不重复元素序列
2.集合中的元素是唯一的
3.集合可以用来去重
- 集合操作
操作 | 代码示范 | 描述 |
---|---|---|
增 | 集合序列.add(数据) | 添加一个数据 |
增 | 集合序列.update(序列数据) | 添加序列 |
删 | 集合序列.remove(数据) | 删除集合中指定的数据,如果数据不存在就报错 |
删 | 集合序列.pop() | 随机删除集合中的某个数据 |
删 | 集合序列.discard(数据) | 删除集合中指定的数据,如果数据不存在不做任何操作 |
八,函数
1.定义及返回值
#定义函数语法:
def 函数名 ( ):
函数语句
return 返回值
#调用函数语法:
函数名( )
注意:函数中可以同时包含多个 return 语句,但只会执行了一个return,return的功能是返回值并退出当前函数,return语句后面的语句都不执行。
2.形参和实参
#定义格式:
def 函数名(形参1,形参2):
函数体
#调用格式:
函数名(实参1,实参2)
注意:
1.传递的实参与形参个数必须保持一致。
2.编写函数时可给每个形参指定默认值,调用函数时给形参提供实参的,将使用指定的实参,若没有则使用默认值。
3.调用函数时,会将实参1传递给形参1,实参2传递给形参2……如果参数过多时可以在调用函数时直接指明形参1=实参1。
>>>def people(name,age):
>>> print(f'My name is {name}.I am {age} years old.')
>>>people('xiaobian',18)
My name is xiaobian.I am 18 years old.
>>>people(age =18,name='xiaobian')
My name is xiaobian.I am 18 years old.
3.参数
- 位置参数(必备参数)
def 函数名(形参1,形参2):
函数体
函数名(实参1,实参2)
- 默认参数(缺省参数)
def 函数名(形参1=数据,…):
函数体
- 不定长参数(*args,kwargs)
1. *args常以元组的形式输出,收集任意数量的位置实参
def 函数名(*args):
函数体
函数名(实参1,实参2,实参3,……)
2. kwargs常以字典的形式输出,收集任意数量的关键字实参
def 函数名(kwargs):
函数体
- 参数定义顺序:
位置参数、默认参数、不定长参数(*args,kwargs)
4.作用域
- 局部作用域
定义在函数内部的变量拥有一个局部作用域,表示只能在声明它的函数内部访问。
在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。
- 全局作用域
定义在函数外部的变量拥有全局作用域,表示可以在整个程序范围内访问。
(函数内、外部都能生效)
- 修改作用域
global | nonlocal |
---|---|
声明变量的作用域为全局作用域 | 数中的下划线关键字用来在函数中使用外层(非全局)变量 |
>>>def great():
>>> global a
>>> a = 40
>>> print(f'函数内:{a}')
>>>a = 20
>>>great()
>>>print(f'函数外:{a}')
函数内:40
函数外:40
>>>def great():
>>> global a
>>> a = 40
>>> print(f'函数内:{a}')
>>>a = 20
>>>great()
>>>print(f'函数外:{a}')
函数内:40
函数外:40