TI/Programowanie z Pythonem/Zadania powtorzeniowe

Z Brain-wiki

Rozdział ten zawiera zadania powtórzeniowe do pierwszego kolokwium. Prosimy sprawdzać tę stronę co jakiś czas, bo zadań może przybywać!

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))),