<jupyter_start><jupyter_text>Wprowadzenie do Python c.d.  Krotki, listy i słowniki<jupyter_code># krotka (tuple) - kolekcja elementów, której nie można modyfikować
b = ( 1, 'a', 'helo')

print('b=', b)

print('b[0]=', b[0])    # pierwszy element, indeksowane od 0

print('%c %d %x %o' % (42, 42, 42, 42))
# lista (tablica)

a = [1, 2, 3, 5]

print('lista a=', a)
print('a[0]=', a[0])

for i in a:
    print(i)
    
for i, x in enumerate(a):
    print(i, x)
# lista 
a = [ 5, 3, 2, -4, 12]

a.reverse()    # odwracanie
print(a)

a.sort()       # sortowanie
print(a)

a.append(3)    # dodawanie elementu na końcu
print(a)

del a[0]      # usuwanie elementu
print(a)

# pusta lista
a = []

print('Zawartosc listy', a)
print('Dlugosc listy = ', len(a))

for i in range(5):
    a.append(i**2)

print('Zawartosc listy', a)
print('Dlugosc listy = ', len(a))
    
# lista zawierająca listy 
a= [[ 1, 2 ,3 ], [4, 5, 6, 7 ]]
print(len(a))
print(a[0])      # pierwszy wiersz
print(a[1][2])    
# indeksowanie list
a = [ 5, 3, 1,6 ,3]
print(a[0])             # pierwszy element
print(a[-1])            # ostatni element
print(a[1:3])           # element 1,2
print(a[2:])            # element od 2 do końca
# słownik { 'klucz1' : wartość1, 'klucz2': wartość2, ...}
s = { 'ala' : 'ma kota', 'ewa' : 'ma psa'}

print(s['ala'])    

s['janek']='l<NAME>'    # nowy element słownika

for k in s:
    print(k, s[k])
    
print(s.keys())      # lista kluczy
print(s.values())    # lista wartości
print(len(s))        # ilośc elementów<jupyter_output><empty_output><jupyter_text>Funkcje<jupyter_code># definicja funkcji
def suma(a, b, c):
    
    return a + b + c
    
x = suma(1, 3, 4)
print(x)
# funkcja może zwracać krotkę (więcej niż jedną wartość)
def funkcja2(a, b, c):
    
    return a+1, b-1, c
    
x, y, z = funkcja2(1, 2, 3)

print(x, y, z)<jupyter_output><empty_output><jupyter_text>*** **Ćwiczenie**Napisz funkcję, która dla podanej liczby całkowitej $n$ wyznacza wartość silni $!n = 1 \cdot 2 \cdot \ldots \cdot n$. Korzystając z tej funkci wypisz wartości silni dla wszystkich liczb całkowitych od 1 do 20. *Dla chętnych:* spróbuj zaimplementować funkcję z wykorzystaniem rekurencji.<jupyter_code><jupyter_output><empty_output><jupyter_text>*** PlikiOperacje na plikach: https://www.w3schools.com/python/python_file_handling.aspW ćwiczeniach wykorzystano plik [liczby.txt](http://www.is.umk.pl/~grochu/mn/files/liczby.txt), który zawierakilka liczb odzielonych przecinkiem```1,2,3,4,5,611,22,33,44,55,6642,32,32,1```Pobierz plik i umieść w katalogu w którym znajduje się notatnik.<jupyter_code># Pobranie pliku (uwaga: działa tylko, gdy w systemie zainstalowany jest wget)
!wget http://www.is.umk.pl/~grochu/mn/files/liczby.txt
# Odczyt pliku 

plik = open('liczby.txt', 'r')
for linia in plik:
    print(linia)
plik.close()    
x = []
with open('liczby.txt', 'r') as plik:
    for linia in plik:
        liczby = linia.split(',')
        for l in liczby:
            x.append(float(l))

print(x)
# Zapis do pliku

liczby = [ 3, -5 , 2 , 3]

f = open("output.txt", "w")
f.write("Oto liczby:\n")
for x in liczby:
    f.write('%.3f\n' % x)
f.close()

# !ls -l<jupyter_output><empty_output><jupyter_text>*** **Ćwiczenia**Plik  [torun_temp_2015_2020.txt](http://www.is.umk.pl/~grochu/mn/files/torun_temp_2015_2020.txt) zawiera wartości średniej dobowej temperatury w Toruniu od 2015 roku zapisane w nastepującycm formacie (ROK DZIEN MIESIĄC TEMPERATURA). ```2015 01 01    0.652015 01 02    1.892015 01 03    1.94...```Wyznacz nstępujące wartości:  * średnia wartość temperatury w całym okresie  * średnia temeratura w latach 2015, 2016, 2017, 2018, 2019  * wartość maksymalna i minimalna wraz z informacją kiedy wystąpiły te wartościUzyskane wyniki zapisz do pliku o nazwie `'wynik.txt"`. *** Moduły i pakietyLista wbudowanych funkcji: https://docs.python.org/3.8/library/functions.htmlLista wbudowanych pakietów: https://docs.python.org/3.8/library/Przykład: * **math** https://docs.python.org/3.8/library/math.html* **random** https://docs.python.org/3.8/library/random.html* **time** https://docs.python.org/3.8/library/time.html<jupyter_code>import math


print(math.sqrt(2))
import random as r

for i in range(10):
    print(r.random())
from time import sleep

for i in range(10, 1, -1):
    print(i)
    sleep(1)

print('Start!')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1581363323387652, 'fraction_numerical': 0.04406701859077347, 'mean_word_length': 3.8207964601769913, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 22, 'https://': 6, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '269576', 'license': 'CC0-1.0', 'n_tokens_mistral': 2022, 'n_tokens_neox': 1948, 'n_words': 448, 'path': '02_python2.ipynb', 'repo_name': 'IS-UMK/mn', 'size': '4362'}