Jak podzielić litery w środku listy?

0

Pytanie

Mam ten fragment kodu

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)

to, że jestem zatrzymany, to to, jak dzielić litery w środku listy, a nie pisać wszystkie litery razem. Próbowałem solve = (solve.split(",") for sep in solve) ale to daje mi błąd. co na pewno zrobię, to przyjmę ord() wartość każdej litery i odejmij 4, a następnie zwrócić go do str na chr()

cryptography list python
2021-11-24 04:14:09
2

Najlepsza odpowiedź

1

Można użyć zrozumienie listy:

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']

Jeśli chcesz wykorzystać swój kod źródłowy, to po prostu list(solve) powstanie lista postaci. Ale zwróć uwagę, że na początku swojej solve; dzieje się tak dlatego, że zainicjowały solve z " "nie "".


Jeśli chcesz odjąć 4 z każdego dotyczący składania znaków (jak wyjaśnił w pytaniu), aby uzyskać ciąg, to

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]

to dało by ci krótką drogę.

2021-11-24 04:25:02

Działa dobrze, dziękuję panu.
iis2h
0

Można użyć listy bezpośrednio zamiast polecenia w następujący sposób:

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']

Można przekształcić rozwiązanie, w jednej linii, jak pokazano poniżej:

''.join(solve)
2021-11-24 04:19:04

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................