python基础之数据类型

数据类型(重要)

什么是数据类型?
	视频文件 音频文件 表格文件 图片 等等这些都是保存数据的方式
# 在IT领域也有各种各样的保存数据的方式

数据类型的种类?
- 数字类型
  - 整数类型(int)
  - 浮点类型(float)
- 字符串类型(str)
- 列表类型(list)
- 字典类型(dict)
- 布尔类型(bool)
- 元祖类型(tuple)
- 集合类型(set)

数据类型之整型(int)

作用:记录年龄、出生年份,学生人数等整数相关的状态
定义:
	age = 18
    student_count = 48
    year = 2001
数据类型的关键字:
	print(type(age))

浮点型(float)

作用:用来记录人的身高,体重,薪资等小数相关的状态
定义:
	height = 1.8
    weight = 120.5
    salary = 2800.5
数据类型的关键字:
	print(type(height))

数字类型的应用

(1)数字运算

  • 整数和浮点数可以进行常见的数学运算,包括加法、减法、乘法、除法等。
a = 10
b = 3.5
result = a + b

# 结果为浮点数 13.5
print(result)  # 13.5
print(type(result))  # <class 'float'>

(2)比较大小

  • 我们可以使用比较运算符(如<><=>=)来比较数字的大小,得到布尔类型的结果
a = 5
b = 2
compare_result = a > b

# 结果为True
print(compare_result)  # True
print(type(compare_result))  # <class 'bool'>

数据类型之字符串(str)

作用:用来记录人的名字,家庭住址,性别等描述性质的状态
定义:
	方式一:
    	username = 'kevin'  # 单引号
    方式二:
    	username = "kevin"  # 双引号
    方式三:
    	username = '''kevin''' # 当三引号的左边有赋值符号的时候就是字符串,否则是注释
    方式四:
    	username = """kevin""" # 当三引号的左边有赋值符号的时候就是字符串,否则是注释
    print()
    总结:就是引号引起来的部分都是字符串!
 
为什么需要有这么多定义的方式?
	res = '李老师说:'趁年轻,学技能,养活自己''
    
res = '李老师说:"趁年轻,学技能,养活自己"'
res = "李老师说:'趁年轻,学技能,养活自己'"
print(res)

# 一个字符串中出现了使用多个引号的是情况:外边是单引号,里面就是双引号,相反!

# 字符串的拼接
res1 = 'hello'
# res2 = 'world'
# res = ',python'
# print(res1 + res2 + res)  # helloworld

# 重复字符串
print(res1 * 20) # hellohellohellohellohellohellohellohellohellohello

数据类型之列表(list)

作用:列表类型就是专门用来记录多个同种属性的值(比如同一个班级多个学生的姓名、同一个人的多个爱好等),并且存取都十分方便

定义: 
    stu_names = ['张三','李四','王五']

# 使用中括号括起来,内部存放多个元素值,元素与元素之间使用逗号分割,内部可以存放任意的数据类型
	stu_names = [1, 2, 1.1, 1.2, '张三','李四','王五']
    
存起来如何取值:
    	
# 练习题:
l = [1, 2, 3, ['kevin', 'tony', ['a', 'b', [11, 22, 'kevinNB', [111, 222, 333, 4444, 555, 666]]]]]

# 取出来  kevinNB
# 1. 问'kevinNB'在列表的第几个元素
l1 = l[3]
print(l1)  # ['kevin', 'tony', ['a', 'b', [11, 22, 'kevinNB']]]

# 2. 问'kevinNB'在列表的第几个元素
l2 = l1[2]
print(l2)  # ['a', 'b', [11, 22, 'kevinNB']]

# 3. 问'kevinNB'在列表的第几个元素
l3 = l2[2]
print(l3)  # [11, 22, 'kevinNB']

l4 = l3[2]
print(l4)  # kevinNB

# 合并一下
# l5 = l[3][2][2][2]
l5 = l[3][2][2][3][5]
print(l5)

数据类型之字典(dict)

作用:
	如果我们需要用一个变量记录多个值,但多个值是不同属性的比如人的姓名、年龄、身高,用列表可以存,但列表是用索引对应值的,而索引不能明确地表示值的含义;这就用到字典类型,字典类型是用key:value形式来存储数据。
	其中key可以对value有描述性的功能,能够明确的描述详细信息。
定义:
	d = {'username':'kevin', 'age':18, 'gender':'male', 'salary':2000}
    
字典就是使用大括号括起来,内部存放多个元素值,元素与元素之间使用逗号隔开,但是,元素类型是key:value的形式,key是对value的解释型信息,value才是真正的变量值

取值:
### 练习题一
info = {
    'username': 'jerry',
    'addr': [1, 2, 3, {'age': 18, 'gender': 'male', 'hobby': ['tangtou', 'xijio', 'anmuo', 'niejiao', {'a': 'kevinNB'}]}]
}

# 取出 kevinNB
# 1. 问kevinNB在字典的第几个位置
l1 = info['addr']
print(l1) # [1, 2, 3, {'age': 18, 'gender': 'male', 'hobby': ['tangtou', 'xijio', 'anmuo', 'niejiao', {'a': 'kevinNB'}]}]

# 2. 问kevinNB在列表的第几个位置
l2 = l1[3]
print(l2)  # {'age': 18, 'gender': 'male', 'hobby': ['tangtou', 'xijio', 'anmuo', 'niejiao', {'a': 'kevinNB'}]}

# 3. 问kevinNB在字典的第几个位置
l3 = l2['hobby']
print(l3)  # ['tangtou', 'xijio', 'anmuo', 'niejiao', {'a': 'kevinNB'}]

l4 = l3[4]
print(l4)  # {'a': 'kevinNB'}

l5 = l4['a']
print(l5)  # kevinNB

# 合并一下
l6 = info['addr'][3]['hobby'][4]['a']
print(l6)

###练习题二
info = {
    'name': 'Dream',
    'addr': {
        '国家': '中国',
        'info': [666, 999, {'编号': 466722, 'hobby': ['read', 'study', 'music']}]
    }
}

# 1. music在大字典里的位置
d1 = info['addr']  
print(d1)
# {'国家': '中国', 'info': [666, 999, {'编号': 466722, 'hobby': ['read', 'study', 'music']}]}

# 2. music在小字典里的位置
d2 = d1['info']  
print(d2)
# [666, 999, {'编号': 466722, 'hobby': ['read', 'study', 'music']}]

# 3. music在列表里的位置
d3 = d2[2]  
print(d3)
# {'编号': 466722, 'hobby': ['read', 'study', 'music']}

# 4. music在小字典里的位置
d4 = d3['hobby']  
print(d4)
# ['read', 'study', 'music']

# 5. music在列表里的位置
d5 = d4[2]  
print(d5)
# music

# 整合
d6 = info['addr']['info'][2]['hobby'][2]
print(d6)
# music
##.get方法与中括号取值的区别
# 取值 --- 中括号,放键
name = name_dict['name']
print(name)
# 取值 --- get
name = name_dict.get('name')
print(name)
# 当原来字典里没有相关键的时候,.get方法打印出来的是none,而中括号是报错
age = name_dict.get('age', 18)
print(age)
print(type(age))

数据类型之布尔类型(bool)

作用:布尔类型用于表示逻辑值,只有两个取值:True 和 False。在编程中,布尔类型经常用于控制程序的流程,例如条件判断、循环等。
定义:
	a = True # 代表的是真、对、正确的等含义
    b = False # 代表的是假、错、不正确等含义

# 布尔类型的变量命名一般使用is_开头
is_right = True
is_ok = False
is_delete = True

# 扩展:is_delete
name		age		gender 		phone 		is_delete
kevin		18		male		110				1


# python中什么是真、什么是假?
	你只需要记住哪些是假的情况,其余都为真
     哪些是假?
        0、''、None、[]、{}、等

数据类型之元组(tuple)

# 元组就是不可变的列表,其他的跟列表都一样
定义:
	t = (1,2,3,4,5)
元组就是使用小括号括起来,内部存放多个元素值,元素与元素之间使用逗号隔开,它不能够修改,其余的跟列表都一样,也是索引(下标)来取值

取值:
	print(t[0])

元组的使用

(1)元组的不可变性
  • 由于元组是不可变的,不能对元素进行修改、删除或添加。
# 尝试修改元组的元素(会报错)
my_tuple[0] = 42  # TypeError: 'tuple' object does not support item assignment

# 尝试删除元组的元素(会报错)
del my_tuple[1]  # TypeError: 'tuple' object doesn't support item deletion

# 尝试添加元素到元组(会报错)
my_tuple.append('new_element')  # AttributeError: 'tuple' object has no attribute 'append'
(2)元组的基本操作
  • 元组支持基本的操作,如切片、拼接等。
# 切片操作
sliced_tuple = my_tuple[1:3]
print(sliced_tuple)  # ('hello', 3.14)

# 拼接操作
new_tuple = my_tuple + ('world', False)
print(new_tuple)  # (1, 'hello', 3.14, True, 'world', False)
(3)元组解包
  • 元组解包是一种将元组中的元素分配给多个变量的方法。
# 元组解包
a, b, c, d = my_tuple

print(a)  # 1
print(b)  # 'hello'
print(c)  # 3.14
print(d)  # True
(4)元组的应用场景
  • 用于函数返回多个值
  • 保持数据的不可变性,适用于一些常量集合的场景
  • 元组作为字典的键(因为元组是不可变的)
# 函数返回多个值
def get_coordinates():
    return 10, 20, 30

x, y, z = get_coordinates()
print(x, y, z)  # 10 20 30

# 元组作为字典的键
coordinates_dict = {(1, 2, 3): 'Point A', (4, 5, 6): 'Point B'}
print(coordinates_dict[(1, 2, 3)])  # Point A
  • 元组是一个灵活且强大的数据类型,适用于许多场景,特别是需要不可变性的情况。

数据类型之集合(set)

作用:集合(set)是一种无序、不重复的数据类型,用于存储多个独立的元素。集合主要用于:去重、关系运算
定义:
	s = {1, 2, 3, 4}
 使用大括号括起来,内部存放多个元素值,元素与元素之间使用逗号隔开,但是不是key:value的形式

集合的特点:去重
# 练习题:
l = [1, 2, 3, 4, 1, 2, 3, 4]

# 可以把列表转为集合
s = set(l)

print(s) # 集合的类型

ll = list(s)
print(ll)  # [1, 2, 3, 4]

# 如何定义一个空集合
# 如何定义一个空字典

d = {}
print(d, type(d))  # dict

s =  set()
print(s, type(s)) # <class 'set'>

集合运算

  • 集合支持多种集合运算,如并集、交集、差集等。
set_a = {1, 2, 3, 4}
set_b = {3, 4, 5, 6}

# 并集
union_set = set_a.union(set_b)

# 交集
intersection_set = set_a.intersection(set_b)

# 差集
difference_set = set_a.difference(set_b)

格式化输出

1. %输出

​ 使用 % 运算符进行格式化输出,可以在字符串中插入占位符,然后通过 % 运算符传入相应的值。

# 格式化输出语法一 : %
name = "xiao"
age = 18
height = 175.5

# 使用 %s 占位符,输出字符串
print("My name is %s." % name)  
# My name is xiao.

# 使用 %d 占位符,输出整数
print("My age is %d." % age)  
# My age is 18.

# 使用 %f 占位符,输出浮点数,默认保留六位小数
print("My height is %f." % height)  
# My height is 175.500000.

# 使用 %.2f 占位符,保留两位小数
print("My height is %.2f." % height)  
# My height is 175.50.

# 使用 %x 占位符,输出十六进制整数
number = 255
print("Number in hex: %x." % number)  
# Number in hex: ff.

# 两个以上的占位符格式化输出
print("My name is %s; My age is %d" % (name, age)) 
# My name is xiao; My age is 18

2. format输出

​ 使用 format 方法进行格式化输出,通过花括号 {} 表示占位符,然后调用 format 方法传入实际值

name = "xiao"
age = 18
# 格式化输出语法二 : formate
print("My name is {}; My age is {}".format(name, age))
# My name is xiao; My age is 18

​ 在这个例子中,{} 是占位符,它会按顺序依次填充传入 format 方法的值。

3. f + {}输出

​ 使用 f-string(f + {})进行格式化输出,通过在字符串前加上 fF 前缀,然后在字符串中使用 {} 表示占位符,并在 {} 中直接引用变量。

name = "xiao"
age = 18
# 格式化输出语法三 : f + {}
print(f"My name is {name}; My age is {age}")
# My name is xiao; My age is 18

字符串转义

​ 在字符串中,转义字符用于表示一些特殊字符或执行一些特殊操作,常用的转义字符如下:

转义字符 说明
\n 换行符,将光标位置移到下一行开头。
\r 回车符,将光标位置移到本行开头。
\t 水平制表符,也即 Tab 键,一般相当于四个空格。
\a 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b 退格(Backspace),将光标位置移到前一列。
\ 反斜线
' 单引号
" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写。
# 换行符
print("Hello\nWorld")
# Hello
# World

# 制表符
print("Name\tAge")
# Name    Age

# 反斜线
print("This is a backslash: \\")
# This is a backslash: \

# 单引号
print("I'm a programmer.")
# I'm a programmer.

# 双引号
print("He said, \"Hello.\"")
# He said, "Hello."

# 回车符与退格符
print("One\rTwo\bThree")
# Two Three
posted @ 2023-11-28 19:59  Xiao0101  阅读(46)  评论(0)    收藏  举报