• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Pytthon jak połączyć ze sobą listy które przechowują inne typy danych?

VPS Starter Arubacloud
+1 głos
208 wizyt
pytanie zadane 11 listopada 2022 w Python przez niezalogowany

Tworzę generator haseł i nie wiem jak połączyć je ze sobą

I dlaczego lista dodaje się do listy w zmiennej result jak objekt a późńiej dodaja się jej elementy

INPUT:

def generated_password():

    chars_password = ['a','b','c','ć','d','e','ę','f','g','h','i','j','k','l','m','n','ń','p','r','s','t','w','q','y','z','x','ż','ź','dż','dź','A','B','C','D','F','G','H','I','J','K','L','M','N','Ń','P','R','S','T','W','Q','Y','Z','X','Ż','Ź','Ć','DŹ','DŻ','SZ','CZ','!','@','#','$','%','^','&','*','(',')',':',';','"','<','>','`']
    number = list(range(101))
    chars_password.append(number)
    result = chars_password + number

    print(result)


#a = input("Z ilu znaków ma się składac hasło?")

generated_password()

OUTPUT:

['a', 'b', 'c', 'ć', 'd', 'e', 'ę', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ń', 'p', 'r', 's', 't', 'w', 'q', 'y', 'z', 'x', 'ż', 'ź', 'dż', 'dź', 'A', 'B', 'C', 'D', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ń', 'P', 'R', 'S', 'T', 'W', 'Q', 'Y', 'Z', 'X', 'Ż', 'Ź', 'Ć', 'DŹ', 'DŻ', 'SZ', 'CZ', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', ':', ';', '"', '<', '>', '`', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100], 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

1 odpowiedź

0 głosów
odpowiedź 11 listopada 2022 przez reaktywny Nałogowiec (41,370 p.)
edycja 11 listopada 2022 przez reaktywny

Jeśli chodzi o temat wątku:

Użyj metody extend() lub operatora plus (+).  W Pythonie nie ma problemu aby lista przechowywała różne typy danych.

Jeśli chodzi o problem który opisałeś to jest w tej linii:

number = list(range(101))

Jak chcesz wybrać jedną liczbę losowo to użyj np. randint z modułu random.

Metody append() i extend() różnią się - sprawdź sobie jak działają. append() generalnie używa się do dodania jednego elementu, extend() pozwoli dodać wiele elementów na koniec listy. Jak z pomocą append() dodajesz kilka elementów, to powstanie lista typu nested (lista zagnieżdżona),

 

Poniżej moja propozycja (nie jest idealna bo na module random, ale działa):

import random

MIN_CHARS = 5
MAX_CHARS = 60
VALID_CHARS = [chr(i) for i in range(ord('A'), ord('Z'))] + [chr(i) for i in range(ord('a'), ord('z'))] \
              + [str(i) for i in range(10)] + ['_', '*','-','+','$','#','%','@','^','&']


def generated_password(chars_number):
    return ''.join([random.choice(VALID_CHARS) for _ in range(chars_number)])


n = int(input(f"Z ilu znaków ma się składac hasło? (od {MIN_CHARS} do {MAX_CHARS}): "))
if MIN_CHARS <= n <= MAX_CHARS:
    print(generated_password(n))
else:
    print('Podałeś nieodpowiednią liczbę znaków dla generowanego hasła!')

 

 

komentarz 11 listopada 2022 przez niezalogowany
Dzięki za pomoc nie wiesz w jaki spoób mógłbym przechowywać w zmiennej ciąg danych składajacy się z dwóhc typów danych?

czyli np. taki ciąg 137adAA%&$
1
komentarz 11 listopada 2022 przez reaktywny Nałogowiec (41,370 p.)
W łańcuchu znaków (str)?
komentarz 11 listopada 2022 przez niezalogowany
Próbowałem nie da się.
komentarz 11 listopada 2022 przez reaktywny Nałogowiec (41,370 p.)
edycja 11 listopada 2022 przez reaktywny
Nie do końca rozumiem pytanie. Co to znaczy przechowywać? Gdzie? W pamięci? Na dysku? I jakie masz dwa różne typy danych?

Spróbuj:

moje_trudne_haslo = "137adAA%&$"

Może być problem z niektórymi znakami. Spróbuj wtedy użyć raw string:

moje_trudne_haslo = r"137adAA%&$"

W liście nie ma problemu z przechowywanie danych różnych typów - już o tym pisałem. Pokaż przykład kodu...

Podobne pytania

0 głosów
2 odpowiedzi 230 wizyt
pytanie zadane 6 listopada 2022 w Python przez Ichbinda Nowicjusz (230 p.)
0 głosów
1 odpowiedź 323 wizyt
pytanie zadane 13 września 2022 w Python przez Ziom Początkujący (430 p.)
+1 głos
1 odpowiedź 262 wizyt
pytanie zadane 3 listopada 2021 w Python przez jakubjordanek Obywatel (1,340 p.)

92,768 zapytań

141,691 odpowiedzi

320,508 komentarzy

62,106 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...