# Zajęcia 2018.05.13 # kod z Podstawy 2.py z moimi notatkami def dwojak(x): x *= 2 return x def dwojak2(x): x = x * 2 return x l = [1, 2, 3] #ll = l[:] ## l sie nie zmieni ll = l # l sie zmieni, stworz inna nazwe dla tego samego obiektu; jedne obiekt ma dwie różne nazwy - tak się zachowują obiekty mutable s = "123" # lista, slownik, set są mutable, są zawsze przekazywane przez referencje; ale tuple tak nie działają # w przypadku tej funkcji dwojak i listy robimy 2 kopie i laczymy w jedna #dwojak(l) dwojak(ll) dwojak(s) print(l) print(s) print(dwojak(1)) # no i gówno wiadomo # ## Mutable i Immutable # # ### Mutable # * listy, # * słowniki, # * sety, # * własnoręcznie zdefiniowane klasy. # # ### Immutable # * liczby: inty i floaty, # * napisy, # * tuple. # ## Nieoczywistości # In[11]: def dwojak1(x): x *= 2 def dwojak2(x): x = x * 2 print("F:", x) l = [1, 2, 3] dwojak1(l) print(l) l = [1, 2, 3] dwojak2(l) print(l) # In[17]: l = [1, 2, 3] e = l[:] e.append(4) print(l) print(e) # In[19]: e = [] f = [e for i in range(3)] """ f = [i * 2 for i in range(3)] # krotszy sposobna tworzenie listy, range(3) = 0,1,2 lub f=[] for i in range(3): f.append(i * 2) robia to samo, tylko pierwszy zapis jest krotszy """ f[0].append(1) # wez pierwszy element listy i dodaj 1 do listy print(f) # ## To może ``tuple``? # * stały rozmiar, # * immutable, # * mogą być kluczami w słownikach # In[25]: """ tuple, krotki - lista, która nie może się zmieniać, nie możemy dodawać elementów do krotki nawiasy okrągłe tuple mogą być kluczem w słowniku listę nie można przekazać jako klucz do słownika Można zamienic listę na tuple t = [1, "napis", "9") t = tuple(t) # zamienia listę na tuple print(t) print(len(t)) print({t: None}) s_oceny = {} s_ocny[("Jan", "Kowalski)] = 1990 Gdy do krotki trzeba jednak coś dodac: tworzymy nową krotke t i konkatenujemy t = ("Jan", "Kowalski") + (1990,) # (1990,) oznacza krotke jednoelementowa, musi byc przecinek print(t) print(t[-1]) # pokaz ostatni element, indexowanie jest takie samo jak w listach print(t[:2]) """ # funkcja len - liczba elementów t = (1, "napis", []) t[-1].append(0) print(t) print(len(t)) # ilość elementów w liście print({t: None}) # ## Funkcje cz. 2 # In[36]: def suma(*args): return sum(args) """ chcemy pzekazać funkci dowolna ilość elementów tu *args jest listą elementów funkcja sum jest wbudowana w Pythona print(sum([1,1,1,1,11]) """ print(suma(1, 2, 3, 4, 5)) """ def greet_me(z): print("pozdr",z) greet_me("Tomek") def greet_me(z, x="Pozdr"): print(x,z) greet_me("Tomek", "czesc") # czesc nadpisze Pozdr greet_me(x="cześć", z="Tomek") greet_me("cześć", "Tomek") Przydaje się to np. w Pandas, gdy czesc argumanetow chcemy uruchomic z wartosciami domyslnymi, a czesc chcemy zmienic def greet_me(z, x="Pozdr"): print(x,z) return x, x*2 x1,x2 = greet_me(Czesc","Tomaj") # ilość argumentów musi się zgadzać x3 = greet_me(Czesc","Tomaj") # tworzy krotkę print(x1,x2) print(x3) """ def greet_me(z=None, **kwargs): if kwargs is not None: for key, value in kwargs.items(): print("%s == %s" % (key, value)) greet_me(a=1, b=(3, 4)) # # ## Generatory # # In[38]: """ ord - f. ktora zwraca liczbę dla każdego znaku def Range(x): i=0 while i>") plik.close() # musimy zamknac plik # In[47]: with open("haslo.txt", 'r') as plik: # drugi sposob otwieraia pliku, popularniejszy for linia in plik.readlines(): print(linia) # mogą byc linie przerwy ze względu na znaki końca linii # print(plik.read()) # In[48]: with open("haslo2.txt", 'w') as plik: # w = tryb do zapisu, nadpisujemy go # w+ = to o dodamy bedzie dodane na sam koniec for word in ('corect', 'horse', 'battery', 'staple'): plik.write(word) plik.write('\n') with open("haslo2.txt", 'w+') as plik: plik.writelines([' '.join(('corect', 'horse', 'battery', 'staple'))]) # # Korzystanie z modułów # ## Importowanie # In[49]: import os # import pandas as pd # ładuje pandas z alaiasem pd print(os.name) from os import getenv # nie importuje calosc, tylko okreslona funkcje getenv print('Nazwa uzytkownika: {}'.format(getenv("USER"))) # In[50]: from collections import * # importuje wszystko print(Counter("konstantynopolitańczykowianeczka")) # funkcja couner liczy elemeny, np. ila razy jakas litera pojawił się import numpy as np np.array([[1, 3, 4, 5]], dtype='float32') # ## Instalacja # # * lokalnie (per użytkownik) lub globalnie # * pyCharm lub linia komend, np. ``pip install --user flask`` lub ``python -m pip install --user flask`` # ## Wczytywanie z klawiatury # In[51]: name = input("What's your name?\n") print("Welcome home, {}.".format(name)) # In[ ]: liczby = eval(input("Podaj liczby")) print(sum(liczby))