1

Google マシンを使用して Stackoverflow や他のサイトのスレッドを検索しましたが、探しているものは何もありません。

私は Python 3 を使用する新しいプログラミングの学生なので、私のものはほとんど基本的なものです。

Caeser 暗号を使用してテキスト ファイルを暗号化および復号化できるプログラムを作成しています。ユーザーからフレーズを取得し、ユーザー指定のシフトを適用します。

これは私が今取り組んでいるものです:

コードの一部は、プログラムをさらに進めるまで、プレースホルダーとしてそこにあるだけです。

import string
print ("1) Encrypt")
print ("2) Decrypt")
print ("3) Decrypt w/o Shift")

Choice = input("Choice: ")

if Choice == '1':
    message = input("Message: ")
    shift = int(input("Shift: "))
    newmsg = ''
    for char in message:
        if char.isupper():
            new = (ord(char)-ord('A')) + shift
            newmsg = chr(new+ord('A'))
            print (newmsg, end="")
        else:
            print(" ")


elif Choice == '2':
    print ("2")

elif Choice == '3':
    print ("3")

「THIS IS A TEST」などのテスト フレーズを入力すると、正しい暗号化で出力されますが、次のように表示されます。

V
J
K
U

K
U

C

V
G
U
B

これは2の「シフト」です

end = ' 'print ステートメントに追加すると、次のように出力されます。

V J K U
K U
C
V G U V

end = ''print ステートメントに追加すると、次のように出力されます。

VJKU
KU
C
VGUV

次の出力を探しています:

VJKU KU C VGUV

私はこれが私が見落としているばかげたものであることを知っています。どんな助けでも大歓迎です。ありがとうございます。

4

1 に答える 1

5

を使用するend=""だけでなく、このパラメーターを行に追加します

print(" ")

それ以外の場合、この行は改行を追加します。

そうは言っても、最初にリスト内の文字を収集し、一度だけ呼び出す方がおそらく良いでしょうprint():

print("".join(list_of_characters))

さらに別のアプローチは、 で文字変換テーブルを作成し、str.maketrans()で適用することstr.translate()です。

于 2012-09-16T23:09:25.667 に答える