Python2018/notatki/zajecia20180513.py

291 lines
5.3 KiB
Python

# 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<x:
yield i
i+=1
"""
def alfaRange(x, y):
for i in range(ord(x), ord(y)):
print(i)
yield chr(i) # dziala jak return
for c in alfaRange('a', 'e'):
print(c)
#
# ## Operacje na plikach
#
# In[45]:
plik = open("haslo.txt", 'r') # sciezka wzgledna lub bezwzgledna do pliku; r=read only
for linia in plik.readlines(): # metoda readlines przechodzi linia po linii
print(linia.strip()) # usuwa spacje i biale znaki z koncow np. znak konca linii
# print(plik.read())
# print(">>")
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))