Python lista - zadanie z wypisywaniem liczb

0

Muszę utworzyć listę 50 elementową z zakresu <1;100>
Wypisać na ekran liczbę z największą liczbą powtórzeń (liczba - powtórzenia) oraz 19 kolejnych liczb, które mają mniej powtórzeń (wszystko po enterze).
Np. Lista[1, 2, 2, 2, 3, 3, 4, 5, 5, 5, 5]
5 wystąpiło 4 raz/y
2 wystąpiło 3 raz/y
3 wystąpiło 2 raz/y
1 wystąpiło 1 raz/y
4 wystąpiło 1 raz/y
Wydaje się proste, ale problem w tym że mam do napisania dwie wersje, jedną bez użycia funkcji pythona typu max, count itd. (same pętleXD) a drugą z ich użyciem.
Tzn chodzi o zliczenie tych liczb nie używając takich funkcji jak max czy też count - same pętle co jest głupie.

1
  1. Pewnie chodzi o wylosowanie liczb - https://docs.python.org/3/library/random.html#examples
  2. Napisz sobie funkcję max, na moich zajęciach dla 12 latków robią/ę takie zadanie (nie obrażam ciebie, stwierdzam fakt) - deklarujesz zmienną max i w pętli sprawdzasz czy kolejna wartość z listy jest większa, jeśli tak, przypisujesz do max. Pamiętać trzeba, że na początku max inicjalizuje się pierwszym elementem z listy.
  3. Wypisz max lub 19 kolejnych liczb - posortuj listę (bubble sort jest najprostszy) i wypisz 19 kolejnych

EDIT.
same pętle co jest głupie. Nie jest głupie bo uczy pewnego sposobu myślenia, algorytmicznego. Jak nie wiesz jak działa np. max to jak tego możesz używać? Powoduje to masę błędów potem.

0

najprosciej to stworz slownik i przelec po wszystkich elementach listy i przy kazdej liczbie:

  • sprawdz czy dany element wystepuje w slowniku
  • jesli nie wystepuje to dodaj element ktorej kluczem bedzie liczba z listy a wartosc ustaw jako 1
  • jestli istnieje juz w slowniku to podbij ilosc wystapien
0

Proponuję szukać max-a już przy losowaniu liczb, będzie jeden przebieg mniej. Dodatkowo pisanie jego własnej wersji ma sens, bo szukając go możesz od razu liczyć wystąpienia. Co daje ci większą wydajność niż przy osobno max i count.

1 użytkowników online, w tym zalogowanych: 0, gości: 1