2

シーザー暗号を使用してメッセージをエンコードおよびデコードするプログラムを作成しています。これまでのところ、基礎を構築しています。ユーザーから提供された文字のリストを取得し、ordを使用して整数のリストを作成しようとしています...これまでのところ、問題が発生しているのは、受け取った整数を元に戻すことだけです。リスト。

import random

encode_decode = input("Do you want to encode, or decode? (e/d)")

shift_amount = input("Please enter the shift amount for your message")

if encode_decode == "e" or encode_decode == "E":
    user_words_unrefined = input("Enter your message to encode!")
elif encode_decode == "d" or encode_decode == "D":
    user_words_unrefined = input("Enter your message to decode!")

user_words_refined = list(user_words_unrefined)

Alphabet = [chr(i) for i in range(ord('a'), ord('z') + 1)]

Counter = 0
for i in range(len(user_words_refined)):
    user_words_numbers = (ord(user_words_refined[Counter]))
    user_numbers_list = [user_words_numbers]
    print(user_numbers_list)
    Counter += 1

入力(「こんにちは、パーティーの人々!」)出力は、それらすべてを角かっこで囲まれた別々の行に印刷します...何かアイデアはありますか?

[72]
[101]
[108]
[108]
[111]
[44]
[32]
[80]
[97]
[114]
[116]
[121]
[32]
[112]
[101]
[111]
[112]
[108]
[101]
4

4 に答える 4

4

入力文字列の長さを超える for ループを使用する代わりに、リスト内包表記を使用できます。

user_numbers_list = [ord(letter) for letter in user_words_refined]
于 2012-11-07T16:14:23.337 に答える
2

これで解決するはずです。コード内のコメントを参照してください。必要に応じて追加の説明を提供させていただきます

user_numbers_list = []    #initialise the list
Counter = 0
for i in range(len(user_words_refined)):
    user_words_numbers = (ord(user_words_refined[Counter]))
    user_numbers_list.append(user_words_numbers)     #add to the end of the list
    print(user_numbers_list)
    Counter += 1

最善の策は、実際にはリストの理解です...より適切なアプローチについては、ジョーダン・ルイスの回答を参照してください

于 2012-11-07T16:15:09.370 に答える
1

最後の部分を次のように変更します

user_numbers_list = []
Counter = 0
for i in range(len(user_words_refined)):
    user_words_numbers = (ord(user_words_refined[Counter]))
    user_numbers_list.append(user_words_numbers)
    print(user_numbers_list)
    Counter += 1

また、次のように user_words_refined を直接反復することを検討してください。

for word in user_words_refined:
    user_words_numbers = ord(word)
    user_numbers_list.append(user_words_numbers)
    print(user_numbers_list)
于 2012-11-07T16:15:26.233 に答える
0

Just as a side note, instead of

encode_decode = input("Do you want to encode, or decode? (e/d)")

you could use

encode_decode = input("Do you want to encode, or decode? (e/d)").lower()

so you don't have to use too many or's in your if statement.

于 2012-11-07T16:25:14.177 に答える