# 什么是数据类型?
在现实生活中存储数据的方式和表现形式有很多,如:文本文件、表格文件、视频、音频、图片文件等等
在IT世界里数据的存储方式和表现形式也是千变万化的
整型int
# 大白话理解:整数int
作用:记录人的年龄、班级人数···
定义:
age = 18 # 直接写整数就是整型
浮点型float
# 大白话理解:小数float
作用:记录人的体重、薪资、身高
定义:
salary = 3.1 # 直接写小数就是浮点型
"整型与浮点型统称为数字类型,主要用于数学运算和比较运算"
字符串str
作用:一般用来记录人的名字、家庭住址、性别等描述性质的状态。
定义字符串:
方式1:
name = 'ly'
方式2:
name = "ly"
方式3:
name = '''ly''' (如何三引号左边具有赋值符号和变量名,它就是字符串)
方式4:
name = """ly""" (如何三引号左边具有赋值符号和变量名,它就是字符串)
"""
只要是引号左边有赋值符号和变量值,那么写在引号里的数据都是字符串;
这么多方式定义字符串的目的是为了防止引号里面使用引号.
"""
拼接字符串和重复字符串
# 字符串只能拼接或重复,不能使用减和除。
列表
作用:需要用一个变量记录多个学生的姓名用数字类型是无法实现的,字符串类型可以记录但是取值麻烦,而列表类型就是专门用来记录多个同种属性的值,并且存取都十分方便。
定义:使用中括号括起来,里面可以存放多个数据,元素与元素之间用逗号隔开,数据可以是任意数据类型
# 定义列表
name_list = ['ly', 'jason', 'tom', 'qq', 'kevin']
print(type(name_list))
print(name_list)
# 列表取值需要使用索引取值(索引取值从0开始)
print(name_list[1]) # jason
print(name_list[3]) # qq
print(name_list[0]) # ly
# 列表定义之后也可以改
name_list[0] = jason # 意思是将jason赋值给列表name_list的第一个元素
元组tuple
作用:可以存放多个数据,并且方便取出
定义:小括号括起来,里面可以存放多个元素,元素与元素之间使用逗号隔开,
'''元祖就是不可变的列表,其他都和列表一样'''
t = (1, 2, 3, 4) # 取值也是从索引0开始
# 元组定义之后只能读取不能改
t[0] = 2 # 将2赋值给元组的第一个元素,但是会报错
字典dict
作用:如果需要用一个变量记录多个值,但是多个值的属性不同;比如人的姓名、年龄、身高等,可以用列表存,但是列表是用索引对应值,而索引不能明确地表示值的含义,这就要用到字典类型,"字典类型是以key:value的形式来存储数据的",其中key可以对应value有描述性的功能,可以精准的表示数据的含义。
定义:字典就是使用大括号括起来,里面可以存放多个数据,数据与数据之间使用逗号隔开
# 字典里面的数据类型可以是任意数据类型
k:是描述性信息,是对value的解释
v:是真正的数据,相当于变量值
字典的取值是以K来取值的,不支持索引取值。
# 考题:
d1 = {
'name': 'ly',
'addr': ['中国', '上海', {'hobby': ['read', 'music', 'tea', '洋哥最帅']}]
}
# 取值 洋哥最帅
布尔值
作用:用来记录真假两种状态
定义:
True: 表示 真,正确,成立
False:表示 假, 不正确,不成立
#在python中,True和False两个单词的首字母必须大写
# 扩展
在布尔值的变量中,我们一般会使用is开头
is_ok = True
is_success = False
is_delete = True
is_alive = True
#在python中,所有的数据类型都可以转为布尔值
'''
值为False的有哪些?
0, None,'', {}, [], ()...
其余情况都为True
'''
集合
作用:用于去重,集合运算
定义:集合是用大括号括起来,里面可以存放多个元素,元素与元素之间使用逗号隔开,但是,数据形式不是K:V键值对
s = {1, 2, 3, 4}
print(s)
dict1 = {} # <class 'dict'> 空{}表示空字典
# 怎么定义一个空集合
s1 = set() # set()才是空集合
print(type(dict1))
print(type(s1))
与用户交互
1. 输入
s = input('请输入你要取款的金额:')
'''input接受的数据会赋值给变量'''
# input接收的数据类型全都是字符串
print(s, type(s))
2. 输出
print('hello world')
# 输出
# print('hello', 'world', 111, 222)
# print(123, end='$')
# print(345)
# 换行符
print('哈哈哈哈哈哈\n423\n423\n4234')
格式化输出
# 什么是格式化输出
把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出。
s = '亲爱的%s你好!你%s月的话费是%s,余额是%s'
# print(s % ('ly', 12, 1000, 9999999, 10)) # 多一个不行
print(s % ('ly', 12, 1000, 9999 )) # 少一个不行
print(s % ('ly1', 10, 2000, 80000 )) # 少一个不行
s = '亲爱的%s你好!你%s月的话费是%s,余额是%s' % ('ly1', 10, 2000, 80000 )
# 字符串中只有一个%s的时候会怎么样?
s1 = 'hello%s'
# 如果只有一个占位符, 那么%后面可以不加括号
print(s1 % 'world')
# %s => 占位符, 可以为所有的数据类型占位置
# %d => 只能给数字类型占位
s2 = 'my name is %s, my age is %08d'
print(s2 % ('ly', 111))
print(s2 % ('ly', 2))
print(s2 % ('ly', 666666))
print(s2 % ('ly', 9999999999999))
基本运算符
1. 算术运算符
+
-
*
/
a = 13
# print(a + 1)
# print(a - 1)
# print(a * 1)
# print(a / 1)
print(a // 4) # 只要整数部分
print(a % 4) # 只要余数
print(3 ** 4)
2. 比较运算符
==
!=
>
>=
<
<=
3. 增量赋值
x += 1 # x = x + 100
x -= 1
x *= 1
x /= 1
print(x)
4. 链式赋值
x = 10
y = x
z = y
print(x, y,z )
x = y = z = 10
print(x, y,z )
5. 交叉赋值
面试题: 如何交换两个变量?
1. 借助于第三个变量
tmp = m
m = n
n = tmp
print(m, n )
2. 解压赋值
m, n = n, m
print(m, n)
x, y, z = 1, 2, 3
print(x)
print(y)
print(z)
6. 解压赋值
name_list = ['ly', 'tom', 'jason', 'kevin', 'kevin', 'kevin', 'kevin', 'kevin']
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
# print(name1)
# print(name2)
# print(name3)
# print(name4)
# name1, name2, name3, name4, name5 = name_list # 元素个数必须与变量个数一模一样
# name1, name2, name3, name4 = ['ly', 'tom', 'jason', 'kevin']
# print(name1)
# print(name2)
# print(name3)
# print(name4)
# 多余的元素都赋值给了星号后面的变量,如果想取,通过星号后面的变量取值就行
name1, *x, name5 = name_list
print(name1)
print(x)
print(x[0])
print(name5)