ループの各繰り返しで、変数(lett)をアルファベットの次の文字に変更しようとしています。この変数をスクリプトの冒頭で特定の文字に設定することもできなければなりません(そして、スクリプトの使用に応じて最初の文字が変わります)。 (私はまだ学んでいたとき)Pythonのループで変数の文字進行を作成する方法は?
初期スクリプト::私は、次のコードビットの作成を開始し
while lett_trig == 2:
if set_lett == 2:
lett = "a"
if set_lett == 3:
lett = "b"
if set_lett == 4:
lett = "c"
if set_lett == 5:
lett = "d"
if set_lett == 6:
lett = "e"
if set_lett == 7:
lett = "f"
if set_lett == 8:
lett = "g"
if set_lett == 9:
lett = "h"
#... and this goes on till it reaches if set_let == 27: lett = "z"
set_lett += 1
if set_lett == 28:
set_lett = 2
print lett
# set_lett starts at two because I left set_lett == 1 to create a space (" ")
これは、もちろん、より大きなスクリプトを簡略化したものです。 これは私が思い付くことができる唯一の簡素化:
lett_trig = 2
x = 0
a = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
while lett_trig == 2:
lett = a[x]
x += 1
if x == 26:
x = 0
数学的に別の手紙から変更するための他の方法はありますか?いくつかのバイナリ変換操作を通して?またはリスト方法で最も効率的ですか?
回答:すべての答えを通過すると効率のためにそれらをテストした後、私は最速(かつクリーン)する辞書機能を発見しました。コードの例:
import string
letter_map = dict(zip(string.ascii_lowercase, string.ascii_lowercase[1:] + string.ascii_lowercase[0]))
lett1 = "d"
while ord(lett2) < 122:
print lett1
lett1 = letter_map[lett1]
'string.lowercase'は**文字列**' 'abcdefghijklmnopqrstuvwxyz \ x83 \ x90 \ x9a \ x9c \ x9d \ x9e \ x9f \ x9e \ x9f \ xa ... ''です(これに精通していない人それは関数や他のオブジェクトのように見えるかもしれません)、コードスニペットを理解することをより困難にします。 – ovgolovin
は、サイクルの特定の文字を呼び出す方法はありますか?たとえば、lett_1を "h"から "i"に設定した場合、lett_2を "c"から "d"に設定しますか? – Gronk
@ovgolovin 'string.lowercase'は、ここでは' 'abcdefghijklmnopqrstuvwxyz ''です。これはPython 2.7です。おそらくあなたのコメントの余分な文字はPython 3(これは私が今使っているコンピュータにはインストールされていない)で、Unicodeです。 –