第一道题
# -*- coding: utf-8 -*- ''' f(a*b, acb) => true f(abc*, abbc) => false f(**bc, bc) => true ''' import re string='abbc' Regex = re.compile(r'(abc)*') def f(Regex,string): mo = Regex.search(string) if mo.group()!='': return True else: return False if __name__ == '__main__': print(f(Regex,string))
第二道题
# -*- coding: utf-8 -*- """ Created on Tue Aug 1 09:04:28 2017 @author: toby 字典 1--a chr 97--a [0:2] 表示前面两位 [2:] 表示第三位到最后一位 考逻辑递归 """ def output(original, pre): #递归的基本情况,当原始字符串长度为0或1的时候 #当字符串长度为0,返回空 if len(original) == 0: print (pre) return if len(original) == 1: #输出字符串由前面字母+后面字母,后面字母运用递归原理 print (pre + chr(96 + int(original))) return #运用递归 #如果前面两位数小于27 if int(original[0:2]) < 27: #新字符串 k, chr(96+11) new_chr = chr(96 + int(original[0:2])) #print('new_chr:',new_chr) #[2:] 表示第三位到最后一位,开始递归 output(original[2:], pre + new_chr) #如果前面两位数大于或等于27 #新字符串,[0:1]表示第一位数字 new_chr = chr(96 + int(original[0:1])) #[1:]第一位到最后一位,开始递归 output(original[1:], pre + new_chr) if __name__ == '__main__': output('1123', '') #output('112345345345435', '')