2017-03-09 6 views
0

機能のごく一部を変更:Pythonは、この機能の目的は、テキストメッセージの暗号化と復号化することである

def program(str): 
    i = 0 
    message = [] 
    while i < len(str): 
     message.append(ord(str[i])) 
     i += 1 
    print(message) 
program (text) 

は、私は完全に新しいを作成する必要はありませんのでord()コールを変更することが可能です関数?私は関数を実行するたびに新しい文字列を再入力することができるstrのような並べ替え。

+0

を出力? –

+0

3つの非常に異なる回答から分かるかもしれませんが、あなたの質問は書かれているようにはっきりしていません。探しているものをより明快にするために編集することを検討してください(良い例は、サンプル入力と希望する出力を含む)。 – KernelPanic

答えて

0

申し訳ありませんが、質問を正しく解釈しなかった場合、言葉はちょっと混乱しています。私はあなたが「全く新しい機能」と言ったとき、あなたは「完全に新しいループ」を意味すると仮定しています。あなたがwhileループを完全に捨てることができるかどうかを尋ねるなら、私が知る限り、それは不可能です。しかし、forループを使用することは可能です。

for i in range(len(str)): 
    message.append(ord(str[i])) 

ご迷惑をおかけして申し訳ございません。

1

私はあなたがここで欲しいものを理解していると思います。 programに電話をかけて、文字列の各文字にordを実行することもできますが、program_chrという全く新しい機能を使わなくても、文字列の各文字に(例えば)chrを実行できるようにしたいとします。

喜んで、Pythonはfirst-class functionsをサポートしています。これは間違いなく可能です。文字列を渡すのと同じように、関数を引数としてprogramに渡すことができます。

def program (my_str, my_fn): 
    i = 0 
    message = [] 
    while i<len(my_str): 
     message.append(my_fn(my_str[i])) 
     i += 1 
    print(message) 

program("my_string", ord) 

これはordが今までprogramに登場せず、[109, 121, 95, 115, 116, 114, 105, 110, 103]を出力!

あなたはあなた自身を定義するものも含めて、このために任意の関数を使用することができます。

def silly_fn (char): 
    return 12 

program("my_string", silly_fn) 

これは[12, 12, 12, 12, 12, 12, 12, 12, 12]を出力します。


関連注記:strは組み込み関数であり、それは正当な理由のないものを再定義することは決して良い習慣だから、私は、strmy_strにパラメータを変更!

0

あなたの質問はあまり明確ではありませんが、このようなものを探していますか?

def program (str): 
    i, j = 0, 0 
    message = [] 
    for i in range(len(str)): 
     while j<len(str[i]): 
     message.append(ord(str[i][j])) 
     j += 1 
    print(message) 

text1 = 'This is test1' 
text2 = 'This is test2' 
text3 = 'This is test3' 
text4 = 'This is test4' 

str_list = [text1,text2,text3,text4] 

program (str_list) 

これは、プログラムの開発は終わりに行うshoukd何

[84, 104, 105, 115, 32, 105, 115, 32, 116, 101, 115, 116, 49]