python用户交互和运算符
python用户交互和运算符
python数据类型补充
之前介绍了python的基本数据类型,还有两个不常用的数据类型,集合和元组。
集合(set)
什么是集合?
#集合和字典非常像,是用大括号括起来,内部存放多个元素,元素之间用逗号隔开,但内部元素不是K:V键值对。
定义:
s = {1,2,3,4}
'''该数据类型功能很单一,后续使用频率很少,多用于去重,关系运算当中'''
'''如果大括号中的数据为空,则默认为字典'''
元组(tuple)
什么是元组?
#元组和列表非常像,使用小括号括起来 内存可以存放多个元素 元素与元素之间逗号隔开 元素可以是任意数据类型
定义:
t = (1,1.2,'伞兵一号',[1,2,3])
'''跟列表几乎一致 只不过使用的是小括号
元组一般存储一些只能看不能改的数据'''
元组又叫不可变的列表
使用:元组可以和列表一样,使用索引取值法,但元组的值不可以修改
eg:
l1 = [11, 22, 33]
t1 = (11, 22, 22)
print(l1[1], t1[1]) # 索引取值
l1[1] = 996
print(l1)
t1[2] = 117 # 不能修改
print(t1) # 报错
与用户交互
1. 获取用户输入数据
#input()
eg:
username = input('请输入您的用户名:')
#提示用户输入用户名,将获取的用户名赋值给username
'''input()会将用户输入的内容全部转化成字符串形式'''
2. 输出内部数据
#print()
eg:
print(username)
#将username的值输出到控制台,可以一次性输出多个数据,中间用逗号隔开
格式化输出
格式化输出主要用在批量化操作上面,例如每个月通信公司给我们发的账单短信,模板大同小异,主要是里面的一些数据不同,且这个短信的量非常大,单独编辑每条短信工作量太大,根本无法实现,这时就可以用到格式化输出。
#格式化输出的本质就是在编辑模板时,用占位符%s或%d先占住需要修改数据的地方,再输出时将不同的数据填充进去即可。
eg:
# s = '亲爱的%s你好!你%s月的话费是%s,余额是%s'
# print(s % ('伞兵一号', 2, 100, 99999999))
# print(s % ('伞兵二号', 2, 800, -99))
# print(s % ('伞兵三号', 2, 88, 10))
"""占位符:%s %d"""
%s可以给任意数据占位
%d只能给数字占位
print('%08d' % 111) # 00000111
print('%08d' % 2) # 00000002
%08d--->不满八位数的在前方补零
运算符
-
数学运算符
加(+) 减(-) 乘(*) 除(/) 整除(//) 取余(%)
-
增量赋值
x += 1 # 等价于x = x + 1,我们写代码时要追求简洁,这样写更长,故而使用x += 1这种方式。同理: x -= 1 x *= 1 x /= 1
-
链式赋值
x = 1 y = x z = x 等价于 x = y = z = 1 # 最简洁
-
交叉赋值
x = 1 y = 2 怎么使x,y的值交换? 方式一: tmp = x x = y y = tmp # 偏繁琐 方式二: x,y = y,x # python提供的最简洁方式
-
解压赋值
name_list = ['伞兵一号', '伞兵二号', '伞兵三号', '伞兵四号'] #name1 = name_list[1] #name2 = name_list[2] #name3 = name_list[3] #name4 = name_list[4] #上述操作需要写四遍代码,费时费力 name1,name2,name3,name4 = name_list #一步搞定,省时省力 print(name1, name2, name3, name4) '''注意:左边的变量名要和右边列表里的变量数量相等''' 数量不相等时怎么办? name1,name2,*_ = name_list name1,*_,name2 = name_list print(name1, name2, _) print(name1, _, name2) #使用*_来接收剩余的值 '''约定俗成:单独的下划线作为变量名 意思是为了符合语法 但是指向的值用不到的情况'''
-
-
逻辑运算符
与(and) 连接多个条件必须都满足 结果才是True eg: 2 > 1 and 1 != 1 and True and 3 > 2 # False 或(or) 连接多个条件只要有一个满足 结果就是True eg: 2 > 1 or 1 != 1 or True or 3 > 2 # Ture 非(not) 连接多个条件必须都不满足 结果才是True """ 三者混合使用的时候是有优先级的 但是我们不需要记 应该人为的在编写初期就强制规定好顺序 (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3) # False """
-
成员运算,身份运算符
# 成员运算 判断个体在不在某个群体内 name_list = ['伞兵一号', '伞兵二号', '伞兵三号', '伞兵四号'] print('伞兵一号' in name_list) # True print('伞兵一号' not in name_list) # False # 身份运算 is:判断两个数据的内存地址是否一致 ==:判断两个数据的值是否一致