Помещение моих целых чисел в список в Python
Я создаю программу, которая использует шифр Цезаря для кодирования и декодирования сообщений. Пока я создаю основу, я пытаюсь получить свой список символов, которые дает мне пользователь, и составить список целых чисел, используя 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 ответа
Это должно уладить вас. смотрите комментарии в коде. Я буду рад предоставить дополнительные объяснения, если это будет необходимо
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
Лучшая ставка - на самом деле понимание списка... см. Ответ Джордана Льюиса для более аккуратного подхода
Вместо использования цикла for, длина которого равна длине входной строки, вы можете использовать понимание списка.
user_numbers_list = [ord(letter) for letter in user_words_refined]
Поменяйте последнюю часть на что-то вроде
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)
Просто как примечание, а не
encode_decode = input("Do you want to encode, or decode? (e/d)")
вы могли бы использовать
encode_decode = input("Do you want to encode, or decode? (e/d)").lower()
так что вам не нужно использовать слишком много or
в вашем заявлении if.