Strategy for Python Challenge(01)


最近學習Python,對語言方面已經很熟悉了,想作些練習,奈何生活中的問題以我如今的能力還不能好好的解決,故而轉向Python的一些編程挑戰練習,因而就有了下面這篇文章。文章在必定程度上(是大量)參考了聽雨軒這我的的博客點擊前往html

挑戰關卡地址:http://www.pythonchallenge.com/pc/def/map.html 點擊前往
這一光主要是根據字母加密,在這裏就是字母換成它後面的一位字母(循環)。仍是很容易實現的。python

如下是個人版本,請注意個人環境是Python3(畢竟Python3表明將來嘛):編程

def tranString(myString):
    out = []
    alp = 'abcdefghijklmnopqrstuvwxyzab'
    for letter in myString:
        out.append(alp[alp.index(letter) + 2])
    return ''.join(out)

src = input("Please input the string:")
print('             The result:', end='')
print(tranString(src))

再一次強調以上代碼是在Python3中運行的。
按照這種寫法確實是能夠解決問題了,可是毫無疑問,個人解法仍是停留在C語言的思惟。要知道,選擇Python的一個很重要緣由是:app

"Life is short, you need Python" -------Bruce Eckel函數

來看看,Python更加優雅的實現方法:學習

import string


def tranString(myString):
    table = str.maketrans(string.ascii_lowercase, \
                          string.ascii_lowercase[2:] + string.ascii_lowercase[-2:])
    return myString.translate(table)


src = input("Please input the string:")
print('             The result:', end='')
print(tranString(src))

以上代碼,使用到的str.maketrans是str類(內置類來的,跟string有些不一樣,下面會說)中的一個函數,主要是創建一個映射表,用法是maketrans(x, y=None, z=None, /)這個跟Python2中有點不同,好像Python2中maketrans是屬於string類的加密

在Python3中的string類已經沒有方法的實現了,只是定義了一下字母的集合,如string.ascii_lowercasestring.ascii_letters。因此要是在Python3中找不到Python2中string類的函數,能夠去str類中去找或者內置函數。code

相關文章
相關標籤/搜索