# My Solution def decodeMorse(morse_code): # ToDo: Accept dots, dashes and spaces, return human-readable message str = '' words = morse_code.strip().split(' ') for word in words: w = [w.replace(w, MORSE_CODE[w]) for w in word.split(' ')] str = str + ''.join(w)+' ' return str.strip()
# My Solution def find_missing_letter(chars): for i in range(1, len(chars)): if ord(chars[i]) - ord(chars[i-1]) > 1: break return chr(ord(chars[i])-1)
另一个解法是匹配字符串。然后一个一个匹配。第一个没匹配上的就是错的。
第三题
将字符串中的字母代替为其在字母表中对应的位置(数字)
1 2 3 4 5 6 7 8 9 10 11
# My Solution def alphabet_position(text): alphabet = {} result = [] for i in range(26): alphabet[chr(i+97)] = str(i+1) text = list(text.replace(' ','').lower()) for i in range(len(text)): if text[i] in alphabet.keys(): result.append(alphabet[text[i]]) return ' '.join(result)
Points:
lower() :将字符串中的所有字母转为小写字母
str(): 如果被定义了的话,这个函数就用不了了
把string转为list:用list()
他山之石:
字母表中的位置其实就是这个字母的ASCII码 - a的ASCII码(97) + 1(即直接减96)
可以不构建字典,直接用”abcdefg…”的字符串,再用index函数就可以找到位置了
判断字符是否是字母,有函数:isalpha()
之前讲到的list构造中,还可以加上条件判断
要遍历字符串中的每一个字符,直接for c in str即可,不用转为列表再操作~ PS: 但是我去计算了一下时间(time.clock()),先转为list再操作,用时会短一些。当然,差的不是很多。