1

Pythonで標準の「a = 1、b = 2、c = 3 ...」暗号を解読しようとしていますが、少し行き詰まっています。復号化したいメッセージは "he" -- " 8 5 " ですが、if ステートメントの順序により、出力は "eh" になります。これを解決する方法を知っている人はいますか?

import re
import sys
message = " 8 5 ";
map(int, re.findall(r'\d+', message))
if "++" in message:
    sys.stdout.write(" ")
if "--" in message:
    print()
if " 1 " in message:
    sys.stdout.write("a")
if " 2 " in message:
    sys.stdout.write("b")
if " 3 " in message:
    sys.stdout.write("c")
if " 4 " in message:
    sys.stdout.write("d")
if " 5 " in message:
    sys.stdout.write("e")
if " 6 " in message:
    sys.stdout.write("f")
if " 7 " in message:
    sys.stdout.write("g")
if " 8 " in message:
    sys.stdout.write("h")
if " 9 " in message:
    sys.stdout.write("i")
if " 10 " in message:
    sys.stdout.write("j")
if " 11 " in message:
    sys.stdout.write("k")
if " 12 " in message:
    sys.stdout.write("l")
if " 13 " in message:
    sys.stdout.write("m")
if " 14 " in message:
    sys.stdout.write("n")
if " 15 " in message:
    sys.stdout.write("o")
if " 16 " in message:
    sys.stdout.write("p")
if " 17 " in message:
    sys.stdout.write("q")
if " 18 " in message:
    sys.stdout.write("r")
if " 19 " in message:
    sys.stdout.write("s")
if " 20 " in message:
    sys.stdout.write("t")
if " 21 " in message:
    sys.stdout.write("u")
if " 22 " in message:
    sys.stdout.write("v")
if " 23 " in message:
    sys.stdout.write("w")
if " 24 " in message:
    sys.stdout.write("x")
if " 25 " in message:
    sys.stdout.write("y")
if " 26 " in message:
    sys.stdout.write("z")
4

4 に答える 4

3

入力文字列の各数値を最初からではなく、その出現を調べるため、ソリューションは機能しません。

入力が であると仮定すると8 5 8、出力は依然として になりますeh

演算子を使用する代わりにin、メッセージのすべての番号をループする必要があります。

for code in map(int, re.findall("\d+", message)):
    if code == 1:
        sys.stdout.write("a")
    -- ... and so on until 26

ifまた、これらすべてのステートメントを回避するためにコード辞書を使用することにある、他の人が提供したヒントを使用する必要があります。

于 2013-05-23T16:08:06.490 に答える