2021.1.28-day8 元组

复习:

# 1.列表相关函数
# max、min、sum、sorted、len、list(只有容器型数据才能转换成列表)
# 2.相关方法
# 3.字典
# {键1:值1, 键2:值2, ....}
# 可变;无序
# 键 - 不可变;唯一
# 值 - 没有要求
# 增、删、改、查
# 字典[key]、字典.get(key)、字典.get(key, 默认值)
# 遍历
# 增、改:字典[key] = 值
# 删:del 字典[key]、字典.pop(key)
# in 、not in
# dict(序列)
# 将字典转换成列表时,只取它的键
 # keys、values、items
student = {'name':'小明', 'age':'18', 'gender':'男'}
print(student.keys())    #dict_keys(['name', 'age', 'gender'])
print(student.values())  # dict_values(['小明', '18', '男'])
print(student.items())  # dict_items([('name', '小明'), ('age', '18'), ('gender', '男')])

1.元组

# 1,什么是元组(tuple)
'''
元组是容器(序列),将()作为容器的标志,里面多个元素用逗号隔开:(元素1,元素2,...)
不可变(不支持增删改):有序的(支持下标)
元素的要求和列表一样(元组就是不可变的列表)
'''
t1 = (10, 20, True, '123', [10,20], {'a': 100})
print(t1,type(t1)) # (10, 20, True, '123', [10, 20], {'a': 100}) <class 'tuple'>
# 2.查
# 列表获取元素的方法元组都支持
t2 = ('周一', '周二', '周三', '周四', '周五', '周六')
print(t2[1])  # 周二
print(t2[1:]) # ('周二', '周三', '周四', '周五', '周六')
print(t2[:3:-1])  # ('周六', '周五')
# 3.元组特有或则常用的一些操作
# 1)只有一个元素的元组:必须在唯一的那个元素后面加逗号
t3 = (10)
print(t3,type(t3))  # 10 <class 'int'>

t4 = (10,)
print(t4, type(t4))  # (10,) <class 'tuple'>

# 2)在没有歧义的情况下,元组的小括号可以直接省略。(直接将多个元素用逗号隔开也是表示一个元组)
t6 = 10, 20, 30
print(t6,type(t6))  # (10, 20, 30) <class 'tuple'>

# 3)可以通过让变量的个数和元组中的个数保持一致,来获取元组中的每个元素
point = (100, 200)
x, y = point
print(x,y)  # 100 200

# 4) 当变量的个数小于元组的个数时,可在其中一个变量前加*,取值时先让不带星号的按照顺序先取,剩下的元素以列表形式返给带星号变量
t2 = ('小明', 18, 89, 78, 67, 45)
*x1, x2,x3 = t2
print(x1,x2,x3)  # ['小明', 18, 89, 78] 67 45

2.集合

# 1.什么是集合?(set)
'''
集合是容器(序列),将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3,...}
可变的;无序的
元素的要求:不可变;唯一的
'''
x = {}
print(type(x))  # <class 'dict'>

# 空集合
s1 = set()
print(type(s1),len(s1)) # <class 'set'> 0

# 元素不可变
s2 = {10, True, 'abc', (1, 2)}
print(s2)  # {(1, 2), True, 10, 'abc'}
# s3 = {10, True, 'abc', [1, 2]}  # 报错

# 集合无序
print({1, 2, 3} == {1, 3, 2}) # True

# 元素唯一
s3 = {1,2,3,1,2,3}
print(s3)  # {1, 2, 3}

# (常用于去重,但是顺序会变)
scores = [89, 78, 45, 67, 89, 78, 90, 89]
new_scores = list(set(scores))
print(new_scores)  # [67, 45, 78, 89, 90]
# 2.数学集合运算:交集, 并集, 差集, 对称差集, 子集和真子集
s1 = {1, 2, 3, 4, 5, 6, 7}
s2 = {5, 6, 7 ,8 ,9}
#1)交集(&) -求两个集合的公共部分
result = s1 & s2
print(result)
# 2)并集(|) - 合并两个集合
result = s1 |s2
print(result)
# 3)差集(-) - 集合1-集合2->集合1中除了包含在集合2中的部分
result = s1 -s2
print(result)  # {1, 2, 3, 4}
result = s2 - s1
print(result) # {8, 9}

# 4)对称差集(^) - 两个集合合并然后去掉公共部分
print(s1 ^ s2) # {1, 2, 3, 4, 8, 9}

3.字符串

# 1.什么是字符串(str)
'''
字符串是容器(序列), 将''、""、''''''、""""""作为容器的标志,在引号中的每一个符号都是字符串的元素(字符串的元素又叫字符)
不可变(所以所有字符串相关的可变操作,全部都是会产生一个新的字符串);有序的
字符串的元素(字符):通过任何手段可以放入引号中的符号都可以是字符串的元素
'''

# '' 和  ""没有区别, ''和""引起来的字符串内容不能直接通过回车换行,''''''和""""""引起来的字符串内容可以通过回车换行
str1 = "abc123"
str2 = 'abc123'
str3 = '''abc
          123'''
print(id(str1), id(str2), id(str3))  # 2588092641968 2588092641968 2588062654592
# 2.字符
'''
字符分为普通字符和转义字符两种。
1)普通字符
除了转义字符以外的字符都是普通字符

2)转义字符 - 在一些特定符号前加\在字符串中表示一些具有特殊功能或则特殊意义的符号。
\n - 换行
\t - 水平制表符(相当于按一次tab键)
\' - 表示一个单引号
\" - 表示一个双引号
\\ - 表示一个反斜杠
'''
# \u四位的十六进制编码值 - 将编码值转换对应的字符
str8 = 'abc\n123'
print(str8)
# abc
# 123
str8 = '\tabc\n123'
print(str8)
#  abc
#123
str9 = 'abc\'123\"def'
print(str9) # abc'123"def

str10 = 'abc\u4e80123'
print(str10)  # abc亀123

4.字符编码

# 1.字符在计算机中的存储问题(编码值)
# 计算机只能存数字,所以为了能够保存字符,给每一个字符对应一个固定的数字。每次需要保存字符的时候直接保存字符对应的那个数字
# 一个字符对应的那个固定的数字就是这个字符的编码值。
#2.编码表
# 记录字符和编码值之间——对应关系的表,常见的编码表有两种:ASCII表和Unicode编码表
'''
1)ASCII
总共有128个字符
表中,数字字符在大写字母的前面,大写字母在小写字母的前面,大写字母和小写字母之间有其他字母。

2)Unicode编码表
Unicode编码表是对ASCII码表的扩充,它记录了世界上所有的国家所有的名族所有的语言的所有符号
中文的编码范围:4e00~9fa5
'''
# 3.编码值的使用
# 1) \u编码值(4位16进制)
print('\u4e00') # 一
# 2) chr(编码值) - 获取编码值对应的字符
print(chr(97)) # a
# 中文
'''
for x in range(0x4e00, 0x9fa5):
    print(chr(x), end = ' ')
# 盲文
for x in range(0x2800, 0x28ff):
    print(chr(x), end=' ')
'''

# 3) ord(字符) - 获取字符对应的编码值
print(ord('余'), ord('婷'))  # 20313 23159
print(hex(ord('余')), hex(ord('婷')))  # 0x4f59 0x5a77

# 4) 字符串比较大小
# 比较第一对儿不相等的字符的编码值的大小。(两个字符串同位置上的字符是一对)
print('abc' > 'ABCDEF')  # True
print('abcd'>'acdb')  # False
print('你好'> 'hello')  # True 中文的编码都大于英文的编码

'''
数字字符:'0'<= char <= '9'
大写字母:'A'<= char<='Z'
小写字母:'a'<= char<= 'z'
字母:'A'<= char<= 'Z' or 'a' <= char <='z'
中文:'\u4e00'<=char <='\u9fa5'
'''
# 字符串获取字符和列表获取元素的语法一样
pw = input('请输入密码(字母和数字组成):')
for x in pw:
    if not ('0'<= x<= '9' or 'A'<=x<='z' or 'a'<= x<='z'):
        print('密码不合法')
        break
else:
    print('密码合法')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值