变量三要素:
1.value # 值
2.id # 一段数字相当于内存地址的唯一标识
3.type #查看值的数据类型
字符串(数据类型str)
作用:主要用于记录描述性性质的数据 eg:姓名 地址 邮箱
定义:
方式一: # 单引号
name = 'jason'
方式二: # 双引号
方式三: # 三个单引号
方式四: # 三个双引号
ps:引号引起来的部分
#为啥定义字符串需要这么多方式
目的是为了防止字符串内部还需要引号,避免冲突:
res =' jason老师说:'年轻不是挥霍的资本 更不要高估自己' '
res =' jason老师说:"年轻不是挥霍的资本 更不要高估自己” '
"""
+ 字符串的拼接
* 字符串的重复
"""
列表(数据类型list[ ])
作用:能够存储多个数据
name_list = ['jason', 'tony', 'kevin', 'tom']
""""中括号括起来 内部可以存放多个元素 可以是任意元素 包括列表套列表"""[11, 1, 1, 'jason', [11, 1, 2] ]
# 索引取值(从0开始的连续数字)
print(names_list[1]) # tony
print(names_list[3]) # tom
#列表套列表(索引取值)
name_list = ['jason', 'tony', 'kevin', 'tom']
l1 = [11, 1.1, 'jason', [11, 22, 33, [123, 321, 'jasonNB', 555]]]
l2 = l1[3]
l3 = l2[3]
l4 = l3[2]
print(l4)
#整合!!!!!!!!!!!!!!
print(l1[3][3][2])
字典(数据类型dict{ })
作用:相对于list能用更加精准的存储数据, # 且无法使用索引取值(list的取值方法)
定义:大括号括起来 内存可以存放多个元素 元素与元素之间逗号隔开 元素是k:v键值对的形式
K是对V的描述性性质的信息(一般情况下都是字符串)
V是真正的数据 相当于变量的值 可以是任意数据类型
d = {'k':v}# 字典取值需要借助于K
d = {
'username': 'jason',
'age': 18,
'hobby': '学习,
'salary': 13
}
print(d['username']) # jason
print(d['salary']) # jason
# 字典列表复合
d = {'addr': ['安徽', '芜湖', {'国家': '中国', '编号': [11, 22, '中国最牛逼']}], 'username': 'jason'}
l1 = (d['addr'])
d1 = l1[2]
l2 = (d1['编号'])
d2 = l2[2]
print(d2)
d = {'addr': ['安徽', '芜湖', {'国家': '中国', '编号': [11, 22, '中国最牛逼']}], 'username': 'jason'}
# 整合!!!!!!!!!!!!!!!!!
print(d['addr'][2]['编号'][2])
布尔值(数据类型bool)
作用:用于判断事物的对错 是否可行等"""底层所有的判断语句(如循环语句判断,if语句判断)都是基于bool"""
定义:bool只有两种抓状态
True 对的 正确的 可行的
False 错的 不可行的
# 补充
针对布尔值的变量名一般采用is开头
is_right = True
is_delete = False
is_alive = True
#扩展
现实中互联网公司的账号注销,实际上并没有删除数据,而是修改了数据的某个唯一标识 然后通过代码过滤掉
#记忆
bool值为False:
0,None,'',[],{}...
元组(数据类型tuple)
作用:与列表几乎一致 内部可以存放多个元素
定义:用小括号括起来 内部可以存放多个元素 元素和元素之间用逗号隔开 元素不支持修改
# 例如:
l1 = [1, 22, 33, 44] #列表
l1[0] = '嘿嘿'
print(l1)
t1 = (1, 22, 33, 44) #元组
t1[0] = '呵呵'
print(t1)
run得到的结果是
['嘿嘿', 22, 33, 44]
False
集合(数据类型set)
作用:去重和关系运算
定义:用大括号括起来 内部可以存放多个元素 元素和元素之间用逗号隔开
s = {11, 22, 22, 44}
print(s)
run:
{11, 44, 22}
与用户交互
# 输入
# 获取用户输入
username = input('请输入您的用户名>>>:')
'''将input获取到的用户输入绑定给变量名username'''
print(username, type(username))
# input获取到的用户输入全部都会转成字符串
# 输出
print()
1.括号可以使用逗号隔开多个元素一起打印
2.自带end参数 可以控制打印的排版(python3独有)
print(123, end='')
print(123, end='\n')
str = 'slll\nsdlfaga\naflsg\n'
print(str)
run:
123123
slll
sdlfaga
aflsg
换行符 \n
print'a\nb'表示a换行b
print(123, end='') # end=''控制本行输出与下个输出不换行
print(123, end='\n')
str = 'slll\nsdlfaga\naflsg\n' '\n' #end='\n'表示换行
print(str)
print('1\n2\n3\n4')
run:
123123
slll
sdlfaga
aflsg
1
2
3
4
格式化输出
将字符串中某些内容替换掉再输出就是格式化输出
"""
1.先使用占位符占位 %s
2.再使用%按照位置一一替换
"""
res = '亲爱的%s你好!你%s月的话费是%s,余额是%s'
print(res % ('jason', 11, 100, 99999999999))
print(res % ('tony', 11, 200, -100))
print(res % ('kevin', 11, 500, -999))
run:
亲爱的jason你好!你11月的话费是100,余额是99999999999
亲爱的tony你好!你11月的话费是200,余额是-100
亲爱的kevin你好!你11月的话费是500,余额是-999
# %d只能给数字占位(了解)
print('%08d' % 123)
print('%08d' % 1)
print('%08d' % 666)
print('%08d' % 6666666666666)
run: #'%08d'表示占用8个数字位
00000123
00000001
00000666
6666666666666 #超过位数无效
基本运算符
# 算数运算符
// % **
#比较运算符
== 判断值是否相等(无法判断地址)
!= 不等于
#赋值符号
=
#增量赋值
+=
#链式赋值
x = y = z = 8
#交叉赋值(笔试题)
n = a
m = b #让m = a,n = b.
z = b
m = n
n = z
"方式一"
print(m, n)
"方法二"
m, n = n, m
print(m, n)
# 解压赋值(经常使用)
name_list = ['jason', 'kevin', 'tony', 'jack']
name1 = name_list[0]
print(name1)
name2 = name_list[1]
print(name2)
name3 = name_list[2]
print(name3)
name4 = name_list[3]
print(name4)
run:
jason
kevin
tony
jack
# 上式中:
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
'''
*可以接受多余的元素 组织成列表赋值给后面的变量名
下划线单独作为变量名 通常表达的意思指向的值没有啥用
'''
逻辑运算符
and 与
用于连接多个条件且多个条件必须都成立才可以
or 或
用于连接多个条件,但只要有一个成立即可
not 非
取反
print(2 > 1 and 1 != 1 and True and 3 > 2)
run:False
print(2 > 1 or 1 != 1 or True or 3 > 2)
run:True
print(not True)
run:False
"""and, or, not 有优先级之分"""
#我们在编写的时候应该利用括号()人为的规定优先级