0

私は初心者のpython学習者です。モジュールを使用せずに基本的なメッセージ暗号化システムを作成できるかどうか疑問に思っていました。プログラムで文字列内の変数名をチェックして使用したい。

まあ言ってみれば、

a = 'l'
b = '5'
c = 'o'

x = input("Enter your massage: ")

print(x, 'THE_USER INPUT matching the variable name and values')

while または if を使用してこれを実行できることはわかっていますが、永遠に時間がかかります。また、変数を一致させる前に、各文字列の文字をどのように区切りますか。

私はpython 3を使用しています。ありがとう:)

4

3 に答える 3

2

これがあなたがやろうとしていることかどうかはわかりませんが、ここに行きます:

a = 'l'
b = '5'
c = 'o'

x = input("Enter your message: ")
values = [globals().get(var, '') for var in list(x)]

print "".join(values)

Enter your message: abc
l5o

これを行うためのより適切な方法は、次のようになります。

replacements = { 'a': 'l', 'b': '5', 'c': 'o' }

x = input("Enter your message: ")
print "".join([replacements.get(val, "") for val in x])
于 2012-09-21T23:44:18.380 に答える
1

string.translateを使用してください。これは、希望どおりに聞こえる方法を実行するためのはるかに正しい方法です。

from string import maketrans

in_tab  = "abcdefghijklmnopqrstuvwxyz "
out_tab = "5QR&*(=-;Wwz%$^#@!yY~:123xq"

t = maketrans(in_tab,out_tab)
print ("Hello World".translate(t))
于 2012-09-21T23:50:11.663 に答える
1

特定の文字のすべての出現を別の文字に置き換えることを意味する場合は、str.translate関数を見てください。

サンプル コードを次のように拡張できます。

import string

in = input("Enter your message: ")
mapping = string.maketrans('abc', '15o')
out = in.translate(mapping)
print(out)

Everyは a 、every by 、every byにa置き換えられます。1b5co

于 2012-09-22T00:09:07.473 に答える