#python #list #cryptography
Вопрос:
У меня есть этот фрагмент кода
First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" First = list(First.split()) solve = " " for i in First: solve = chr(int(i, base=8)) print(solve)
то, что я застрял, — это то, как разделять буквы внутри списка, а не печатать все буквы вместе. Я пытался solve = (solve.split(",") for sep in solve)
, но это дает мне ошибку. что я точно сделаю, так это возьму ord()
значение каждой буквы и вычту 4, а затем верну его в str с помощью chr()
Комментарии:
1. Какой результат/результат вы хотите получить здесь?
2. список букв = [«j»,»e»,»j» ….и т. Д. ]
3. Понимание генератора нуждается в некоторой модификации для работы, попробуйте это
solve = (sep.split(",") for sep in solve)
Ответ №1:
Вы можете использовать понимание списка:
data = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" output = [chr(int(x, base=8)) for x in data.split()] print(output) # ['j', 'r', 'j', 'e', 'r', 'w', 'h', 'z', 'k', 'r', 'e', 'x', 'a', 'x0e']
Если вы просто хотите использовать свой исходный код, то просто list(solve)
составите список символов. Но обратите внимание , что в начале вашего текста есть (возможно, непреднамеренный) пробел solve
; это происходит потому, что вы начали solve
с " "
, а не ""
.
Если вы хотите вычесть 4 из каждого целочисленного представления символов (как вы объяснили в вопросе), чтобы получить строку, то
data = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" output = ''.join(chr(int(x, base=8) - 4) for x in data.split()) print(output) # fnfansdvgnat]
это дало бы вам короткий путь.
Комментарии:
1. Сработало хорошо, спасибо, сэр.
Ответ №2:
Вы можете использовать список напрямую вместо строки следующим образом:
First = "152 162 152 145 162 167 150 172 153 162 145 170 141 16" First = list(First.split()) solve = [] for i in First: solve.append( chr(int(i, base=8))) print(solve) Output: ['j', 'r', 'j', 'e', 'r', 'w', 'h', 'z', 'k', 'r', 'e', 'x', 'a', 'x0e']
Вы можете преобразовать решение в строку, как показано ниже:
''.join(solve)