forked from tdwojak/Python2017
14 KiB
14 KiB
Python: podstaw ciąg dalszy
Tomasz Dwojak
2 grudnia 2017
Co już znamy?
- podstawowe typy danych i operacje na nich
- Instrukcje sterujące:
if
,for
- pisanie funkcji
Co na dziś?
tuple
iset
,- operacje na plikach,
- coś więcej o funkcjach
- korzystanie z bibliotek
- przegląd najważniejszych bibliotek
def dwojak(x):
x *= 2
return x
l = [1, 2, 3]
s = "123"
dwojak(l)
dwojak(s)
print(dwojak(1))
print(l)
print(s)
2 [1, 2, 3, 1, 2, 3] 123
Mutable i Immutable
Mutable
listy,
słowniki,
sety,
własnoręcznie zdefiniowane klasy.
Immutable
liczby: inty i floaty,
napisy,
tuple.
Nieoczywistości
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)
[1, 2, 3, 1, 2, 3] F: [1, 2, 3, 1, 2, 3] [1, 2, 3]
l = [1, 2, 3]
e = l[:]
e.append(4)
print(l)
print(e)
[1, 2, 3] [1, 2, 3, 4]
e = []
f = [e for i in range(3)]
f[0].append(1)
print(f)
[[1], [1], [1]]
To może tuple
?
- stały rozmiar,
- immutable,
- mogą być kluczami w słownikach
t = (1, "napis", [])
t[-1].append(0)
print(t)
print(len(t))
print({t: None})
(1, 'napis', [0]) 3
[0;31m---------------------------------------------------------------------------[0m [0;31mTypeError[0m Traceback (most recent call last) [0;32m<ipython-input-25-2bd2fa17fbf5>[0m in [0;36m<module>[0;34m()[0m [1;32m 3[0m [0mprint[0m[0;34m([0m[0mt[0m[0;34m)[0m[0;34m[0m[0m [1;32m 4[0m [0mprint[0m[0;34m([0m[0mlen[0m[0;34m([0m[0mt[0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [0;32m----> 5[0;31m [0mprint[0m[0;34m([0m[0;34m{[0m[0mt[0m[0;34m:[0m [0;32mNone[0m[0;34m}[0m[0;34m)[0m[0;34m[0m[0m [0m [0;31mTypeError[0m: unhashable type: 'list'
Funkcje cz. 2
def suma(*args):
return sum(args)
print(suma(1,2,3,4,5))
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))
15 a == 1 b == (3, 4)
Generatory
def alfaRange(x, y):
for i in range(ord(x), ord(y)):
print(i)
yield chr(i)
for c in alfaRange('a', 'e'):
print(c)
97 a 98 b 99 c 100 d
Operacje na plikach
plik = open("haslo.txt", 'r')
for linia in plik.readlines():
print(linia.strip())
print(plik.read())
print(">>")
plik.close()
W Paryżu najlepsze kasztany są na placu Pigalle Zuzanna lubi je tylko jesienią. >>
with open("haslo.txt", 'r') as plik:
for linia in plik.readlines():
print(linia)
print(plik.read())
W Paryżu najlepsze kasztany są na placu Pigalle Zuzanna lubi je tylko jesienią.
[0;31m---------------------------------------------------------------------------[0m [0;31mValueError[0m Traceback (most recent call last) [0;32m<ipython-input-47-f06513c1bbec>[0m in [0;36m<module>[0;34m()[0m [1;32m 2[0m [0;32mfor[0m [0mlinia[0m [0;32min[0m [0mplik[0m[0;34m.[0m[0mreadlines[0m[0;34m([0m[0;34m)[0m[0;34m:[0m[0;34m[0m[0m [1;32m 3[0m [0mprint[0m[0;34m([0m[0mlinia[0m[0;34m)[0m[0;34m[0m[0m [0;32m----> 4[0;31m [0mprint[0m[0;34m([0m[0mplik[0m[0;34m.[0m[0mread[0m[0;34m([0m[0;34m)[0m[0;34m)[0m[0;34m[0m[0m [0m [0;31mValueError[0m: I/O operation on closed file.
with open("haslo2.txt", 'w') as plik:
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
import os
print(os.name)
from os import getenv
print('Nazwa uzytkownika: {}'.format(getenv("USER")))
posix Nazwa uzytkownika: tomaszd
from collections import *
print(Counter("konstantynopolitańczykowianeczka"))
import numpy as np
np.array([[1, 3, 4, 5]], dtype='float32')
Counter({'o': 4, 'n': 4, 'a': 4, 'k': 3, 't': 3, 'y': 2, 'i': 2, 'c': 2, 'z': 2, 's': 1, 'p': 1, 'l': 1, 'ń': 1, 'w': 1, 'e': 1})
array([[ 1., 3., 4., 5.]], dtype=float32)
Instalacja
- lokalnie (per użytkownik) lub globalnie
- pyCharm lub linia komend, np.
pip install --user flask
lubpython -m pip install --user flask
Wczytywanie z klawiatury
name = input("What's your name?\n")
print("Welcome home, {}.".format(name))
What's your name? Tomasz Welcome home, Tomasz.
liczby = eval(input("Podaj liczby"))
print(sum(liczby))
Co ominąłem?
- klasy (jutro)
- podział programu na pliki (jutro)