Python教程
数据类型
基本数据类型
数据类型 | 是否可变 |
---|---|
Number(数字) | 不可变 |
String(字符串) | 不可变 |
Bool(布尔类型) | 不可变 |
List(列表) | 可变 |
Tuble(元组) | 不可变 |
Set(集合) | 可变 |
Dictionary(字典) | 可变 |
# 创建变量引用
var1 = 10
var2 = True
#删除变量引用
del var1, var2
数据类型之Number(数字)
# 定义一个Number类型的数据
num_int = 100
num_float = 1.02
num_bool = True
number_complex = 4+3j
Number类型包括:int
,float
,bool
,complex(复数)
。
Python中,内置的type()
函数可以用来查询变量所指的对象类型。
a, b, c, d = 100, 1.02, True, 4+3j
print(type(a), type(b), type(c), type(d))
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?
origin_url=D%3A%255CCodeTools%255CTypora%255CMyBooks%255CPython%25E6%2595%2599%25E7%25A8%258B.assets%255Cimage-20240123172904926.png&pos_id=img-AsdhGnLg-1708003493251)
还可以使用isinstance()
来判断数据类型。
>>> a = 111
>>> isinstance(a, int)
True
>>>
二者区别在于:
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
数据类型之Bool(布尔)
# 定义一个bool类型的数据
myBool = True
布尔类型即 True 或 False。
在 Python 中,True 和 False 都是关键字,表示布尔值。
布尔类型可以用来控制程序的流程,比如判断某个条件是否成立,或者在某个条件满足时执行某段代码。
布尔类型特点:
-
布尔类型只有两个值:True 和 False。
-
布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将 True 视为 1,False 视为 0。
-
布尔类型可以和逻辑运算符一起使用,包括 and、or 和 not。这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。
-
布尔类型也可以被转换成其他数据类型,比如整数、浮点数和字符串。在转换时,True 会被转换成 1,False 会被转换成 0。
-
Python3 中,
bool
是int
的子类,True
和False
可以和数字相加,True==1
、False==0
会返回True
,但可以通过is
来判断类型。 -
Python2 中是没有布尔型的,它用数字
0
表示False
,用1
表示True
。
>>> issubclass(bool, int)
True
>>> True==1
True
>>> False==0
True
>>> True+1
2
>>> False+1
1
>>> 1 is True
False
>>> 0 is False
False
a = True
b = False
# 比较运算符
print(2 < 3) # True
print(2 == 3) # False
# 逻辑运算符
print(a and b) # False
print(a or b) # True
print(not a) # False
# 类型转换
print(int(a)) # 1
print(float(b)) # 0.0
print(str(a)) # "True"
注意: 在 Python 中,所有非零的数字和非空的字符串、列表、元组等数据类型都被视为 True,只有 0、空字符串、空列表、空元组等被视为 False。因此,在进行布尔类型转换时,需要注意数据类型的真假性。
数据类型之String(字符串)
# 定义一个String类型的数据
myStr = "我喜欢学习Python"
Python中的字符串用单引号 '
或双引号 "
括起来。
字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 +
是字符串的连接符, 星号 *
表示复制当前字符串,与之结合的数字为复制的次数。
str = "python"
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始的后的所有字符
print(str * 2) # 输出字符串两次,也可以写成 print (2 * str)
print(str + "TEST") # 连接字符串
执行结果:
Python可使用反斜杠 \
转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r
,表示原始字符串。
print('python')
print('py\nthon')
print(r'py\thon')
执行结果:
Python 没有单独的字符类型,一个字符就是长度为1的字符串。
数据类型之List(列表)
# 定义一个List类型的数据
myList = [1, 1.01, True, "apple", 4+3j]
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 + 是列表连接运算符,星号 ***** 是重复操作。
与Python字符串不一样的是,列表中的元素是可以改变的:
>>> a = [1, 2, 3, 4, 5, 6]
>>> a[0] = 9
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 将对应的元素值设置为 []
>>> a
[9, 2, 6]
Python 列表截取可以接收第三个参数,参数作用是截取的步长,以下实例在索引 1 到索引 4 的位置并设置为步长为 2(间隔一个位置)来截取字符串:
数据类型之Tuple(元组)
# 定义一个Tuple类型的数据
myTuple = (1, 2, "apple")
元组与列表的不同之处在于:
- 元组使用小括号,列表则使用中括号
- 元组中的元素不能修改,列表中的元素可以修改
注意事项:
- 元组中只有一个元素时,须在元素后添加一个逗号,否则小括号会被当做运算符来使用
- 元组中的元素无法修改,删除,只能通过del来删除整个元组
数据类型之Dictionary(字典)
# 定义一个dict类型的数据
myDict = {
"name":"小明", "age":20, "sex":"男"}
# 访问字典中的元素
myDict["name"]
# 往字典中添加属性(修改属性)
myDict["school"] = "清华大学"
# 删除字典中的元素
del myDict["name"]
数据类型之Set(集合)
# 定义一个set类型的数据
mySet = {
1, 2, 0.1, "apple", 4+3j}
# 判断元素是否在集合内 返回True或者False
"apple" in mySet # True
# 两个集合间的运算
a = set('abracadabra')
b = set('alacazam')
print(a) # {'a', 'r', 'b', 'd', 'c'}
print(b) # {'l', 'a', 'z', 'm', 'c'}
print(a - b) # {'r', 'b', 'd'}
print(a | b) # {'l', 'a', 'z', 'r', 'b', 'd', 'm', 'c'}
print(a & b) # {'a', 'c'}
print(a ^ b) # {'l', 'd', 'z', 'm', 'b', 'r'}
集合推导式
c = {
x for x in "erassdfvcxbadqcfa" if x not in "abc"}
print(c) # {'e', 'v', 's', 'r', 'x', 'q', 'f', 'd'}
集合的基本操作
mySet = {
'Google', 'Taobao', 'Twitter'}
# 添加元素
mySet.add('FaceBook')
print(mySet) # {'Twitter', 'Google', 'Taobao', 'FaceBook'}
# 移除元素-方法一
mySet.remove('Google') # 如果元素不存在,则会发生错误。
print(mySet) # {'Twitter', 'FaceBook', 'Taobao'}
# 移除元素-方法二
mySet.discard('Taobao') # 如果元素不存在,不会发生错误。
print(mySet) # {'Twitter', 'FaceBook'}
# 随机删除集合中的一个元素
mySet.pop()
print(mySet) # {'Twitter'}
# 计算集合中元素个数
count = len(mySet)
print(count) # 1
# 清空集合
mySet.clear()
print(mySet) # set()
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素个数 |
流程控制
条件控制
演示图:
方法一:if-elif-else
代码格式:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
实例演示:
code = int(input("请输入水果编号(1.苹果;2.香蕉;3.橘子):"))
if code == 1:
print("您选择的水果是苹果!")
elif code == 2