Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def losuj_prezenty(lista=[]):
- from random import randint
- # jeśli brak listy, to nic nie robimy
- if lista is None:
- print('Brak danych...')
- return None
- if type(lista) is not list:
- print('Błędne dane - wymagam typu list, np. [ "Adam", "Beata", "Szymon"]')
- return None
- if len(lista) <= 1:
- print('Brak danych lub zbyt mało... - minimum 2 elementy.')
- return None
- # najpierw sprawdzamy, czy lista nie zawiera duplikatów,
- # porównujemy jej długość do długości zbioru zbudowanego z niej
- if len(lista) != len(set(lista)):
- print("Nie mogę pracować - lista zawiera duplikaty !!!!")
- return False
- # 1, bo numerowanie listy, 1 bo bez 1 osoby
- losujemy = len(lista) - 2
- # w słowniku będziemy przechowywać gotowe wyniki przypisania
- pary = {}
- for kto in lista:
- lista_set = set(lista)
- kto_1 = set([kto]) # aby w zbiorze znalazło się pełne imię
- losuj = list(lista_set - kto_1) # tworzymy zbiór bez jednej osoby
- print(f"Szukamy pary dla: {kto}", end="")
- los = randint(0, losujemy)
- kto_2 = losuj[los]
- # dopóki kto_2 (a więc obdarowywana osoba) jest wśród
- # listy osób obdarowywanych
- while kto_2 in pary.values():
- print(".",end="")
- los = randint(0, losujemy)
- kto_2 = losuj[los]
- else:
- # kiedy pętla while zakończy sowje działanie, a więc będzie takie
- # los_2, którego nie ma wśród wartości słownika pary
- pary[kto] = kto_2
- print(f" -> {pary[kto]}")
- return pary
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement