主题:数据类型(简单接触一下)
- 字符串
- 列表
- 字典
- 布尔值
- 元祖
- 集合
- 与用户交互
- 基本运算符
数据类型之字符串str
作用:主要用于记录描述性质的数据 eg:姓名 地址 邮箱
定义:
方式1: 单引号 name = 'zhangsan'
方式2: 双引号 name = "zhangsan"
方式3: 三个单引号 name = '''zhangsan'''
方式4: 三个双引号 name = """zhangsan"""
注:三个单双引号时左侧出现了赋值符号和变量名为字符串 否则为注释
为什么定义字符串需要这么多种方式?
res = 'zhangsan说:'年轻不是挥霍的资本 更不要高估自己''
目的是为了防止字符串文本内还需要使用到引号 为了避免冲突
res = 'zhangsan说:''年轻不是挥霍的资本 更不要高估自己'''
数据类型之列表list
作用:能够存储多个数据并可以方便的取出任意个数
特征:中括号括起来 内部可以存放多个元素 元素与元素之间逗号隔开 元素可以是任意数据类型
[11, 1.1, zhagsan, [11, 222, 33, 44]]
索引取值(从0开始的连续数字)
小练习:
l1 = [11, 33, 'zhangsan', 55, 66]
print(l1[2])
# 取出的值是zhangsan
l1 = [11, 1.1, 'jason', [11, 22, 33, [123, 321, 'zhangsanNB', 555]]]
print(l1[3][3][2])
# 取出值是zhangsanNB
数据类型之字典dict
作用:能够更加精确的存储数据
定义:大括号括起来 可以存放多个元素 元素与元素之间逗号隔开 元素是K:V键值对的形式
K是对V的描述性性质的信息(一般情况下都是字符串)
V是真正的数据 相当于变量的值 可以是任意的数据类型
d = {
'username': 'zhangsan',
'age': 18,
'hobby': '学习',
'salary': 13
}
# 字典无法使用索引取值
# print(d[0])
# 字典取值需要借助于K
# print(d['username']) # zhangsan
# print(d['salary']) # 13
# 例题:
# 取出"中国最牛逼"
info = {
'username': 'zhangsan',
'addr': ['山东', '菏泽', {'国家': '中国', '编号': [11, 22, '中国最牛逼']}]
}
print(info['addr'][2]['编号'][2])
数据类型之布尔值bool
作用:用于判断事物的对错 是否可行等
定义:
True 对的 正确的 可行的
False 错的 不可行的
# 补充
针对布尔值的变量名一般采用is开头
is_right = True
is_delete = False
is_alive = True
# 扩展
显示生活中的数据存储与销户 其实很大概率上并没有删除数据
而是修改了数据的某个唯一标识 然后通过代码筛选过滤掉
# 记忆
在Python中所有的数据类型都可以转成布尔值
布尔值为False的有:
0, None, '', [], {}...
其他情况一律为True
数据类型之元祖tuple
作用:与列表几乎一致 内部可以存放多个元素(可以看成是不可变的列表)
定义:用小括号括起来 内存存放多个元素 元素与元素之间用逗号隔开 元素不支持修改
t = (11, 22, 333, 55, 66)
数据类型之集合set
作用:去重和关系运算
定义:用大括号括起来 内存可以存放多个元素 元素与元素之间逗号隔开 元素不是K:V键值对
s = {11, 22, 33, 44, 55, 66}
与用户交互
# 输入
# 获取用户输入
username = input('请输入您的用户名>>>:')
'''将input获取到的用户输入绑定给变量名username'''
print(username, type(username))
# input获取到的用户输入全部都会转成字符串
# 输出
print()
1.括号可以使用逗号隔开多个元素一起打印
2.自带end参数 可以控制打印的排版
print(123,end='\n')
print(123,end='$')
格式化输出
将字符串中某些内容替换掉在输出就是格式化输出
res = '亲爱的%s你好!这里是澳门赌场,你本次消费是%s元,累计欠款%s元'
print(res % ('市民小赵', 5000000, 1100000000))
'''
1.先使用占位符占位 %s
2.在使用%按照位置一一替换
'''
# %d只能给数字占位(了解)
print('%08d' % 123)
print('%08d' % 11)
print('%08d' % 666)
print('%08d' % 77778778)
运算符
# 算术运算符
// % **
# 比较运算符
== 判断值是否相等
!= 值不等于
# 赋值运算符
=
# 增量赋值(偷懒)
n = 111
n = n + 1 # n += 1
n = n - 1 # n -= 1
n = n * 1 # n *= 1
n = n / 1 # n /= 1
# 链式赋值(偷懒)
# x = 111
# y = x
# z = y
x = y = z = 111
# 交叉赋值(笔试题)
m = 10
n = 999
# 错误解答
# m = n
# n = m
# print(m, n) # 999 999
# 方式1: 利用中间变量
# tmp = m
# m = n
# n = tmp
# print(m, n) # 999 10
# 方式2:交叉赋值
m, n = n, m
print(m, n) # 999 10
# 解压赋值
name_list = ['jason', 'kevin', 'tony', 'jack']
# name1 = name_list[0]
# name2 = name_list[1]
# name3 = name_list[2]
# name4 = name_list[3]
# 解压赋值
# name1, name2, name3, name4 = name_list # 左右两边个数相等
# name1, name2, name3 = name_list # 少一个不行
# name1, name2, name3, name4, name5 = name_list # 多一个也不行
# 进阶用法:可以打破上述规律 特殊符号 *号
name1, *_, name2 = name_list
print(name1, _, name2) # jason ['kevin', 'tony'] jack
name1, *_ = name_list
name1, name2, *_ = name_list
'''
*可以接受多余的元素 组织成列表赋值给后面的变量名
下划线单独作为变量名 通常表达的意思指向的值没有啥用
'''
逻辑运算符
在Python逻辑运算符就三个
and 与
用于连接多个条件并且多个条件必须都成立才可以
or 或
用于连接多个条件并且多个条件只要有一个成立即可
not 非
取反
print(2 > 1 and 1 != 1 and True and 3 > 2)
print(2 >1 or 1 != 1 or True or 3 > 2)
print(not True)
"""
三个连接符号如果混合使用 是有优先级的
"""
但是我们在编写的时候应该人为的规定好优先级
成员运算
# 判断某个个体在不在某个群体内
关键字:in(在) not in(不在)
name_list = ['jason', 'kevin', 'tony', 'jackson']
# name = input('请输入您要查询的学生姓名>>>:')
# print(name in name_list)
# print(name not in name_list)
# print('j' in 'jason j j j n n')
print('jason' in {'username': 'jason', 'age': 18}) # False
字典默认暴露给外界的只有K
print('username' in {'username': 'jason', 'age': 18}) # True
身份运算
# 判断两个数据 值和内存地址是否相等
符号: ==(只判断值) is(判断内存地址)
s1 = ['jason', 'kevin', 'tony', 'jackson']
s2 = ['jason', 'kevin', 'tony', 'jackson']
print(s1 == s2) # True
# print(id(s1), id(s2))
print(s1 is s2) # False
"""
值相等内存地址不一定相等
内存地址相等值一定相等
"""