Witam,
Czy może mi ktoś wytłumaczyć co tu się dzieje, bo ja już nie wiem.
Otóż, jest sobie string sttr oraz jest lista out zawierająca pierwsze litery grup znaków D (digits), P (punctuation), L (lowercase), U (uppercase).
Pętla for ma zadanie, aby z listy usunąć oznaczenia występujących znaków.
W moim stringu występują wszystkie cztery grupy. Jest literka mała, jest literka duża, jest cyferka i znaki specjalne.
from string import ascii_lowercase, ascii_uppercase, digits, punctuation
sttr = 'Lo$a2@'
out = ['D', 'L', 'P', 'U']
try:
for i in sttr:
if i in [x for x in ascii_uppercase]:
out.remove('U')
elif i in [x for x in ascii_lowercase]:
out.remove('L')
elif i in [x for x in digits]:
out.remove('D')
elif i in [x for x in punctuation]:
out.remove('P')
except ValueError:
pass
print(out)
I po tym princie z niewiadomych mi powodów otrzymuję to:
['D']
I nie mam zielonego pojęcia dlaczego tak się dzieje. Wygląda tak, jakby out.remove('D')
nie działało.