如果涉及的数据很多,一定要用 set,因为 set 的 in 操作是 O(1) 的,用 list 是 O(n) 速度太慢
pow
注意内置的 pow 和 math 库里的 pow 接收的参数是不一样的,前者可以接受 3 个参数
小片段功能代码
生成固定长度随机字符串密码
import random
import string
defrandom_str(length=8):return"".join(random.sample(string.ascii_letters, length))
from random import Random
defrandom_str(randomlength=8):str=''
chars ='AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
length =len(chars)-1
random = Random()for i inrange(randomlength):str+=chars[random.randint(0, length)]returnstr
二进制字符串转普通字符串
每 8 个分成一组,用 int 转 10 进制,再用 chr 转为 ascii 字符
s="0110001101111001"
ans=""for i inrange(0,len(s)//8):
x = s[i*8:i*8+8]
ans+=chr(int(x,2))
利用 binascii,先用 int 转为 10 进制,然后转为 16 进制字符串,调用 unhexlify 执行翻译
import signal
defsignal_handler(signum,data):if signum == signal.SIGINT:print("Ctrl+C is pressed!")# raise KeyboardInterruptif __name__ =='__main__':
signal.signal(signal.SIGINT, signal_handler)
sleep(666)