学习python第九天
字符串
字符串的基本操作
就亲自去尝试就完了,都是一些简单的概念
a = 'hello'
print(a.center(80, '='))
print(a.rjust(80, '='))
print(a.ljust(80, '='))
b = '1234'
print(b.zfill(6))
c = 4321
d = 5432
print('%d + %d = %d' % (c, d, c + d))
print(f'{c} + {d} = {c + d}')
print('{} + {} = {}'.format(c, d, c + d))
print(f'{c} * {d} = {c * d:.4e}')
print(f'{c} + {d} = {c + d:.2%}')
print(f'{c} * {d} = {c * d:,}')
email = ' jackfureed@126.com'
content = 'hello, good, word'
meat = '马化腾是个傻逼'
print(email.strip())
print(email.rsplit())
print(meat.lstrip('马化腾').replace('傻逼', '*'))
字符串的操作功能
content = 'You go your way, I will go mine.'
content2 = content.replace(',', '').replace('.', '')
words = content2.strip()
for word in words:
print(word)
words = content2.strip(',')
for word in words:
print(word)
items = content2.split(' ', maxsplit=3)
print(items, len(items))
item = content2.rsplit(' ', maxsplit=3)
print(item, len(items))
字符串的操作
编码:把一种字符串集转换成另外一种字符集 解码:把一种字符集转换成另外一种字符串集 要点: 1、选择字符集编码时,最佳选择也是默认的是utf-8编码 2、编码和解码的字符集要保持一致,否则会出现乱码现象 3、不能用ISO-8859-1编码保存中文,否则会出现编码黑洞,中文变成问号 4、UTF-8是Unicode的一种实现方案, 也是一种变长的编码,最少一个字节,最多四个字节,表示中文用三个字节
强调一定要自己在电脑上敲一遍
a = '我爱你中国'
b = a.encode('gbk')
print(type(b))
print(b)
c = b'\xce\xd2\xb0\xae\xc4\xe3\xd6\xd0\xb9\xfa'
print(c.decode('gbk'))
a = '我爱你中国'
# GBK<----GB2312<-----ASCII
# UTF-8编码是Unicode(万国码)的一种实现方案
b = a.encode('gbk')
print(type(b))
print(b)
c = b'\xce\xd2\xb0\xae\xc4\xe3\xd6\xd0\xb9\xfa'
# 如果编码和解码的方式不一样,python中可能会产生UnicodeDecodeError异常
# 也有可能出现乱码现象
print(c.decode('gbk'))
a = '🌂,?🐉'
b = a.encode()
print(type(b), b, len(b))
c = b'\xf0\x9f\x8c\x82\xef\xbc\x8c\xe2\x80\x8d\xf0\x9f\x90\x89'
print(c.decode())
字符串的操作
凯撒密码 - 通过对应字符的替换,实现对明文进行加密的一种方式 abcdefghijklmnopqrstuvwxyz defghijklmnopqrstuvwxyzabc 明文:attack at dawn 密文:dwwdfn dw gdzq 对称加密: 机密和解密使用了相同的密钥 非对称加密: 加密和解密使用不同的密钥(公钥、私钥)---->适合互联网应用
了解即可
message = 'attack at dawn'
table = str.maketrans('abcdefghijklmnopqrstuvwxyz',
'defghijklmnopqrstuvwxyzabc')
print(message.translate(table))
生成随机验证码(由数字和英文字母构成,长度为4)
随机生成20组
import random
big_letters = [chr(i) for i in range(65, 91)]
small_letters = [chr(i) for i in range(97, 123)]
nums = [str(i) for i in range(1, 10)]
counts = nums + big_letters + small_letters
将三个列表汇总
for _ in range(20):
selected_char = random.choices(counts, k=4)
print(''.join(selected_char))
import random
counts = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
for _ in range(20):
selected_char = random.choices(counts, k=4)
print(''.join(selected_char))
import random
import string
counts = string.digits + string.ascii_letters
for _ in range(20):
selected_char = random.choices(counts, k=4)
print(''.join(selected_char))
集合
python中的集合其实和中学学习的集合性质大同小异
- 集合元素没有顺序
- 集合没有索引,也就不能切片
- 集合元素不能重复,就算自定义集合是元素重复,系统也会忽略重复项,输出也只会保留重复项里的一个元素
注意几个问题:
set1 = ()
而是应该这样
set1 = set()
-
set 不能作为变量名称,否则会和集合本身搞混 -
集合是可以遍历的 -
集合里不能放入其他容器 先来简单尝试定义一个集合 set1 = {1, 2, 3, 3, 1, 4, 2, 1, 3, 1}
set2 = set()
print(len(set1))
for elem in set1:
print(elem)
集合的运算
-
其实集合的运算道理也是和中学的集合运算一样的 set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
set2 = {2, 4, 6, 8}
print(1 in set1)
print(1 not in set1)
print(set1 & set2)
print(set1.intersection(set2))
print(set1 | set2)
print(set1.union(set2))
print(set1 - set2)
print(set1.difference(set2))
print(set1 ^ set2)
print((set1 | set2) - (set1 & set2))
print(set1.symmetric_difference(set2))
一方面是记住那几个特殊符号,另外一方面就通过理解单词的意思记住方法,在做什么运算时使用哪个函数
-
intersection 路口,也就是交汇处 -
union 盟会, 合并才能成为盟会 -
difference不相同的,就更不用多说了吧
集合的操作
|