TI/Programowanie z Pythonem/Zadania powtorzeniowe
Rozdział ten zawiera zadania powtórzeniowe do pierwszego kolokwium. Prosimy sprawdzać tę stronę co jakiś czas, bo zadań może przybywać!
Spis treści
Zadanie 1
Znajdź liczbę Eulera ze wzoru: [math] e = \sum_{n=0}^{\infty} \frac{1}{n!} [/math] z dokładnością 10−6. Funkcję obliczającą silnię argumentu napisz samodzielnie.
Zadanie 2
- Napisz funkcję wyszukującą wszystkie wspólne dzielniki dwóch liczb. Funkcja ma zwracać dzielniki w postaci listy.
- Napisz funkcję zwracającą największy wspólny dzielnik (NWD) dwóch liczb.
- (trudniejsze) Napisz funkcję zwracającą najmniejszą wspólną wielokrotność (NWW) dwóch lub więcej liczb.
Uwaga:
Sposób obliczania NWD:
- [math] \begin{array}{l} \mathrm{NWD}(a,0)=a\\ \mathrm{NWD}(a,b)=\mathrm{NWD}(b,(a \mathrm{\ mod\ } b)) \end{array} [/math]
Sposób obliczania NWW:
- [math] \begin{array}{l} \mathrm{NWW}(a_1,a_2)=\frac{a_1 a_2}{\mathrm{NWD}(a_1,a_2)}\\ \mathrm{NWW}(a_1,a_2,...,a_n)=\mathrm{NWW}(a_1,\mathrm{NWW}(a_2,...,a_n)) \end{array} [/math]
Zadanie 3
Napisz funkcję, która przesunie elementy listy L cyklicznie w lewo o k miejsc. Parametrami funkcji jest lista L oraz liczba k, o którą należy przesunąć elementy.
Zadanie 4
Plik danych (na przykład plik.txt) zawiera w każdej linijce liczbę. Policz średnią z tych liczb, a wynik zapisz w nowym pliku o nazwie utworzonej przez dodanie sufiksu „_avg” do nazwy pliku (w naszym przykładzie: plik_avg.txt).
Zadanie 5
Stwórz funkcję, która przyjmuje nazwę pliku i tworzy dwa nowe pliki zawierające linie parzyste i linie nieparzyste zadanego pliku. Nazwy plików mają być budowane jako sufiksy, np. dla plik.txt, stwórz plik_0.txt oraz plik_1.txt.
Zadanie 6
Plik z danymi zawiera w każdej linijce: symbol grupy, średnik oraz liczbę. Policz średnią wartość liczb z zadanej grupy.
Zadanie 7
Napisz funckję mediana(lista), która zwraca medianę z listy liczb lista i przetestuj ją dla przykładowej listy liczb.
Medianę zbioru n liczb definiujemy jako:
- a) dla zbioru z n nieparzystym: liczbę leżącą w środku zbioru po jego posortowaniu;
- b) dla zbioru z n parzystym: średnią arytmetyczną z dwóch liczb leżących w środku zbioru po jego posortowaniu.
Następnie przetestuj tę funkcję dla przykładowego zbioru liczb, np.:
- mediana([2, 4.5, -30, 5, 3, 2.21, 8.81, 444]) — wynik 4.75,
- mediana([2, 4.5, -30, 5, 3, 2.21, 8.81]) — wynik 4.5.
Zadanie 8
Napisz funkcję chain(n) obliczającą wartość ułamka łańcuchowego 1 / (1 + 1 / (1 + 1 / (1 + ... ), gdzie n jest liczbą kresek ułamkowych w podanym wyrażeniu.
Następnie za pomocą pętli wypisz na ekran wartości zwracane przez tę funkcję dla n = 0, 1, 2, 3,..., 33. Powinny one zbiegać do ok. 0,61803398875.
Wskazówka:
- chain(0) == 1,
- chain(1) == 1 / (1 + 1),
- chain(2) == 1 / (1 + 1 / (1 + 1)),
- chain(3) == 1 / (1 + 1 / (1 + 1 / (1 + 1))),