Zadania do lekcji 3

Na początek kilka bardzo typowych funkcji. Jest to standard programowania - znajdziecie je na każdym kursie...

Zadanie 301
Napisz funkcję suma(L) sumującą wszystkie elementy listy L. Przetestuj ją porównując, czy dostaniesz taki sam wynik jak dla wbudowanej funkcji sum(L).
Zadanie 302
Średnia arytmetyczna zdefiniowana jest jako suma elementów zbioru podzielona przez ilość tych elementów. Napisz funkcję srednia(L) obliczającą wartość średnią liczb w liście L. Uważaj na pułapkę dzielenia w obrębie typu int. Posłuż się też funkcją z zadania 301.
Zadanie 303

Napisz funkcję silnia(n) obliczającą silnię z liczby n

\[n! = 1 \cdot 2 \cdot 3 \cdot \dots \cdot n-1 \cdot n\]
Zadanie 304
Napisz funkcje f2c oraz c2f. Pierwsza powinna przeliczać stopnie fahrenheita na celsiusa, a druga odwrotnie.
Zadanie 305

Proszę napisać funkcję która dla konkretnej trzycyfrowej ABC (np: 543) liczby oblicza po kolei

  1. odwraca cyfry liczby oryginalnej CBA (345)
  2. odejmuje liczbę odwróconą od oryginalnej XYZ = ABC - CBA (543 - 345 = 198)
  3. odwracamy cyfry obliczonej różnicy ZYX (891)
  4. dodajemy do siebie różnicę XYZ oraz jej odwrócenie ZYX, obliczamy i zwracamy wynik = XYZ + ZYX (198 + 891 = 1089)

Proszę sprawdzić taki algorytm dla kilku liczb. Jeżeli cyfry w oryginalnej liczbie ABC będą ułożone malejąco (jak w powyższym przykładzie), to wynik obliczeń będzie wynosił zawsze 1089.

Zadanie 306
Używając informacji o wycinaniu sekwencji napisz funkcję sprawdzającą, czy dana sekwencja (lista, krotka czy łańcuch) jest palindromem. Funkcja powinna zwracać literał bool.
Zadanie 307

Napisz program, który będzie sprawdzał, które z podanych kandydatów na hasła spełniają kryteria

  • przynajmniej jeden znak jest małą literą
  • przynajmniej jeden znak jest dużą literą
  • przynajmniej jeden znak jest cyfrą [0-9]
  • przynajmniej jeden znak jest z grupy znaków !, @, #, $

Z podanej jako argument listy możliwych haseł funkcja ma zwracać tylko te, które spełniają powyższe kryteria, np z grupy Bd1234@1,a, F1#,2w3E*, 2We3345 powinien wybrać tylko ABd1234@1.

Zadanie 308

Zbuduj funkcję, która sprawdza, czy podana jako parametr sekwencja seq składa się z samych liczb. Jeżeli tak, to powinna zwracać True, jeżeli nie to False:

def jest_sek_liczbowa(seq):
    ...

>>> jest_sek_liczbowa([1, 2, 3])
True
>>> jest_sek_liczbowa((3, 'a', None))
False
>>> jest_sek_liczbowa("1234")
True
Zadanie 309

Ciąg rosnący to taki, którego kolejne elementy są większe od poprzednich. Zaprogramuj funkcję sprawdzającą, czy podana lista zawiera liczbowe elementy będące ciągiem rosnącym

>>> jest_rosnacy([20, 30, 31])
True
>>> jest_rosnacy([100, 10, 1])
False
>>> jest_rosnacy([20, 20, 30])
False

Uwaga: wykorzystaj funkcję z zadania 308 aby sprawdzić, czy elementy listy są liczbami.

Zadanie 310

Jeżeli poradziłeś sobie z zadaniem 309, to napisz podobne funkcje, sprawdzajace, czy podane sekwencje stanowią

  • ciąg malejący
  • ciąg niemalejący
  • ciąg nierosnący
  • ciąg stały
Next Section - Lekcja 4. Obiekty.