Codewar (1)

it2022-05-05  118

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)& ome+=chr(lower+offset) elif message[i].isupper(): offset = (ord(message[i])-upper+key)& 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)& + 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(" ")])

 

`

转载于:https://www.cnblogs.com/moonnight/p/5600592.html

相关资源:PapersPlease Codewar题解

最新回复(0)