Python2017/labs03/Podstawy 2.ipynb

13 KiB
Raw Permalink Blame History

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 i set,
  • 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
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-2bd2fa17fbf5> in <module>()
      3 print(t)
      4 print(len(t))
----> 5 print({t: None})

TypeError: 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ą.

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-47-f06513c1bbec> in <module>()
      2     for linia in plik.readlines():
      3         print(linia)
----> 4 print(plik.read())

ValueError: 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 lub python -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)