0x00 前言
登陆了codewar平台刷题,被大神虐的非常惨 做了几道题感觉有些收获,记录一发
0x01 凯撒加密
这个程序曾经写过,记得利用chr() ord()函数判断ascii码范围
def encryptor(key, message): #Program me! lower=ord(‘a‘) upper=ord(‘A‘) ome=‘‘ for i in range(0,len(message)): if message[i].islower(): offset = (ord(message[i])-lower+key)%26 ome+=chr(lower+offset) elif message[i].isupper(): offset = (ord(message[i])-upper+key)%26 ome+=chr(upper+offset) else: ome+=chr(ord(message[i])) return ome`
然而 大牛来打脸了
#clever 1 #ascii_lowercase ascii_uppercase 是内置的小写和大写字母的字符串 #string.maketrans(from,to) 产生一个转换表可以供translate使用 将from中的每个字母映射到to中的对应位置 from string import maketrans as mt ,ascii_lowercase as lc ,asscii_uppercase as uc def encryptor(key,message): key %=26 return message.translate(mt(lc+uc,lc[key:]+lc[:key]+uc[key:]+uc[:key]))
第二次打脸
#str.isalpha() 判断是否是字母 #将i.isupper() 用在表达式中 判断字母大小写 # return ‘‘.join(lst) 将最开始的字符串初始化省略 #字符串可以直接迭代 不用用数组分割 #将列表转换成字符串用 ‘‘.join() def encryptor (key, mess): lst = [] for i in mess: if i.isalpha(): C = 97 - 32 * i.isupper() lst.append (chr ((ord (i) - C + key)%26 + C)) else: lst.append (i) return ‘‘.join (lst)`
0x02Weird String
`# This is a test => ThIs A TeSt #This => ThIs #My solution ‘‘‘ from string import ascii_uppercase as uc ,ascii_lowercase as lc def to_weird_case(string): str1=‘‘ lt1=[] lt=string.split() for n in lt: m=0 for i in n: if i in uc or i in lc: if m%2==0: str1+=i.upper() m+=1 else: str1+=i.lower() m+=1 lt1.append(str1) str1=‘‘ strf=‘‘ for i in range(0,len(lt1)): if len(lt1)>1: strf+=lt1[i]+‘ ‘ else: strf+=lt1[0] if len(lt1)>1: strf=strf[0:len(strf)-1] return strf ‘‘‘` `#clever 1 def to_weird_case_word(string): return "".join(c.upper() if i%2 == 0 else c for i, c in enumerate(string.lower())) def to_weird_case(string): return " ".join(to_weird_case_word(str) for str in string.split())` `‘‘‘ 黑魔法 1: for i,c in enumerate(string) 黑魔法 2 : ‘ ‘.join 将字符串间插入空格 ‘‘‘ #clever 2 def to_weird_case(string): recase = lambda s: "".join([c.upper() if i % 2 == 0 else c.lower() for i, c in enumerate(s)]) return " ".join([recase(word) for word in string.split(" ")])
`
时间: 2024-10-28 22:52:29