2016-04-15 5 views
0

現在アルファベットの特定の文字の置換リストがあります。 aの文字は、の最初ののインデックス、bのインデックス、のインデックス、のインデックスなどの値で置き換えられます。Pythonで連結リスト内包表記を使用する

私がPythonで高く評価している機能の1つは、リスト内包表記を実行する機能です。しかし、連結でこれを実行しようとしたとき、私は肯定的な結果を得ていませんでした。

letters = ["ka","zu","mi","te","ku","lu","ji","ri","ki","zu","me","ta","rin","to","mo", 
      "no","ke","shi","ari","chi","do","ru","mei","na","fu","zi"] 

def nameToNinja(str): 
    name = "" 
    for i in str: 
     i=i.lower() 
     if ord(i) >= 97 and ord(i) <= 122: 
      name+= letters[ord(i.lower()) - 97] 
     else: 
      name += i 
    return name 


name = "Obama" 
print("Your ninja name is: {0}".format(nameToNinja(name))) 

この機能をPythonでリスト内包にすることはできません。実際、私が受け取っている唯一のエラーはSyntax Errorです。

試み:

def nameToNinja(str): 
    return ''.join([letters[ord(i.lower()) - 97] if ord(i.lower()) >= 97 and ord(i.lower()) <= 122 else i 
    for i in str) 

連結されたリストの内包表記に元の関数を短縮するための正しい方法は何ですか。

+2

をあなたはあなたのブラケットを不一致。 – user2357112

答えて

-1
letters = ["ka","zu","mi","te","ku","lu","ji","ri","ki","zu","me","ta","rin","to","mo","no","ke","shi","ari","chi","do","ru","mei","na","fu","zi"] 

name = "Obama" 

ninja_name = ''.join(
     [letters[ord(i)-ord('a')] if i.islower() else i for i in name] 
     ) 

print("Name:", name, "Ninjaname:", ninja_name) 
+2

これは全く同じではありません。大文字の手紙がどうなるか考えてみましょう。 – DSM

+0

あなたの結果を「おじかんがん」と希望の結果「モズカリンカ」と比較してください。ソリューションを常にテストする必要があります。 –

2
letters = ["ka","zu","mi","te","ku","lu","ji","ri","ki","zu","me","ta","rin","to","mo","no","ke","shi","ari","chi","do","ru","mei","na","fu","zi"] 

def nameToNinja(str): 
    return ''.join([letters[ord(i.lower()) - 97] if (97 <= ord(i.lower()) <= 122) else i.lower() for i in str]) 

name = "Obama" 
print("Your ninja name is: {0}".format(nameToNinja(name))) 
2

これは、一度だけ文字ごとに.lower()を呼び出します。

def name_to_ninja(s): 
    return ''.join(letters[ord(x) - 97] if ord(x) >= 97 and ord(x) <= 122 else x 
        for x in (y.lower() for y in s)) 
name = "Obama" 
print("Your ninja name is: {0}".format(name_to_ninja(name))) 

出力:

Your ninja name is: mozukarinka 
関連する問題