From b3ba876bb1dc2c3858846afcb75fd5dcd3b028e3 Mon Sep 17 00:00:00 2001 From: Tomasz Dwojak Date: Sat, 12 May 2018 12:45:09 +0200 Subject: [PATCH] Add labs03 --- labs03/Podstawy 2.ipynb | 622 ++++++++++++++++++++++++++++++++++++++++ labs03/Podstawy 2.py | 214 ++++++++++++++ 2 files changed, 836 insertions(+) create mode 100644 labs03/Podstawy 2.ipynb create mode 100644 labs03/Podstawy 2.py diff --git a/labs03/Podstawy 2.ipynb b/labs03/Podstawy 2.ipynb new file mode 100644 index 0000000..1b30b50 --- /dev/null +++ b/labs03/Podstawy 2.ipynb @@ -0,0 +1,622 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Python: podstaw ciąg dalszy\n", + "\n", + "## Tomasz Dwojak\n", + "\n", + "### 13 czerwca 2018" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Co już znamy?\n", + " * podstawowe typy danych i operacje na nich\n", + " * Instrukcje sterujące: ``if``, ``for``\n", + " * pisanie funkcji\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "## Co na dziś?\n", + "\n", + " * ``tuple`` i ``set``,\n", + " * operacje na plikach,\n", + " * coś więcej o funkcjach\n", + " * korzystanie z bibliotek\n", + " * przegląd najważniejszych bibliotek" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "[1, 2, 3, 1, 2, 3]\n", + "123\n" + ] + } + ], + "source": [ + "def dwojak(x): \n", + " x *= 2\n", + " return x\n", + " \n", + "l = [1, 2, 3]\n", + "s = \"123\"\n", + "\n", + "dwojak(l)\n", + "dwojak(s)\n", + "print(dwojak(1))\n", + "print(l)\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Mutable i Immutable\n", + "\n", + "### Mutable\n", + " * listy,\n", + " * słowniki,\n", + " * sety,\n", + " * własnoręcznie zdefiniowane klasy.\n", + " \n", + "### Immutable\n", + " * liczby: inty i floaty,\n", + " * napisy,\n", + " * tuple." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Nieoczywistości" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3, 1, 2, 3]\n", + "F: [1, 2, 3, 1, 2, 3]\n", + "[1, 2, 3]\n" + ] + } + ], + "source": [ + "def dwojak1(x): x *= 2\n", + "def dwojak2(x): \n", + " x = x * 2\n", + " print(\"F:\", x)\n", + "\n", + "l = [1,2, 3]\n", + "dwojak1(l)\n", + "print(l)\n", + "\n", + "l = [1,2, 3]\n", + "dwojak2(l)\n", + "print(l)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1, 2, 3]\n", + "[1, 2, 3, 4]\n" + ] + } + ], + "source": [ + "l = [1, 2, 3]\n", + "e = l[:]\n", + "e.append(4)\n", + "print(l)\n", + "print(e)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1], [1], [1]]\n" + ] + } + ], + "source": [ + "e = []\n", + "f = [e for i in range(3)]\n", + "f[0].append(1)\n", + "print(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## To może ``tuple``?\n", + " * stały rozmiar,\n", + " * immutable,\n", + " * mogą być kluczami w słownikach" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 'napis', [0])\n", + "3\n" + ] + }, + { + "ename": "TypeError", + "evalue": "unhashable type: 'list'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'list'" + ] + } + ], + "source": [ + "t = (1, \"napis\", [])\n", + "t[-1].append(0)\n", + "print(t)\n", + "print(len(t))\n", + "print({t: None})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Funkcje cz. 2" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "15\n", + "a == 1\n", + "b == (3, 4)\n" + ] + } + ], + "source": [ + "def suma(*args):\n", + " return sum(args)\n", + "print(suma(1,2,3,4,5))\n", + "\n", + "def greet_me(z=None,**kwargs):\n", + " if kwargs is not None:\n", + " for key, value in kwargs.items():\n", + " print(\"%s == %s\" %(key,value))\n", + "greet_me(a=1, b=(3,4))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Generatory" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "97\n", + "a\n", + "98\n", + "b\n", + "99\n", + "c\n", + "100\n", + "d\n" + ] + } + ], + "source": [ + "def alfaRange(x, y):\n", + " for i in range(ord(x), ord(y)):\n", + " print(i)\n", + " yield chr(i)\n", + "\n", + "for c in alfaRange('a', 'e'):\n", + " print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Operacje na plikach" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W Paryżu najlepsze kasztany są na placu Pigalle\n", + "Zuzanna lubi je tylko jesienią.\n", + "\n", + ">>\n" + ] + } + ], + "source": [ + "plik = open(\"haslo.txt\", 'r')\n", + "for linia in plik.readlines():\n", + " print(linia.strip())\n", + "print(plik.read())\n", + "print(\">>\")\n", + "plik.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "W Paryżu najlepsze kasztany są na placu Pigalle\n", + "\n", + "Zuzanna lubi je tylko jesienią.\n", + "\n" + ] + }, + { + "ename": "ValueError", + "evalue": "I/O operation on closed file.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mlinia\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreadlines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinia\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplik\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mValueError\u001b[0m: I/O operation on closed file." + ] + } + ], + "source": [ + "with open(\"haslo.txt\", 'r') as plik:\n", + " for linia in plik.readlines():\n", + " print(linia)\n", + "print(plik.read())" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "with open(\"haslo2.txt\", 'w') as plik:\n", + " for word in ('corect', 'horse', 'battery', 'staple'):\n", + " plik.write(word)\n", + " plik.write('\\n')\n", + "with open(\"haslo2.txt\", 'w+') as plik:\n", + " plik.writelines([' '.join(('corect', 'horse', 'battery', 'staple'))])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Korzystanie z modułów" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Importowanie" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "posix\n", + "Nazwa uzytkownika: tomaszd\n" + ] + } + ], + "source": [ + "import os\n", + "print(os.name)\n", + "\n", + "from os import getenv\n", + "print('Nazwa uzytkownika: {}'.format(getenv(\"USER\")))" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "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})\n" + ] + }, + { + "data": { + "text/plain": [ + "array([[ 1., 3., 4., 5.]], dtype=float32)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from collections import *\n", + "print(Counter(\"konstantynopolitańczykowianeczka\"))\n", + "\n", + "import numpy as np\n", + "np.array([[1, 3, 4, 5]], dtype='float32')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Instalacja\n", + "\n", + " * lokalnie (per użytkownik) lub globalnie\n", + " * pyCharm lub linia komend, np. ``pip install --user flask`` lub ``python -m pip install --user flask``" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Wczytywanie z klawiatury" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "What's your name?\n", + "Tomasz\n", + "Welcome home, Tomasz.\n" + ] + } + ], + "source": [ + "name = input(\"What's your name?\\n\")\n", + "print(\"Welcome home, {}.\".format(name))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "liczby = eval(input(\"Podaj liczby\"))\n", + "print(sum(liczby))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/labs03/Podstawy 2.py b/labs03/Podstawy 2.py new file mode 100644 index 0000000..b821abb --- /dev/null +++ b/labs03/Podstawy 2.py @@ -0,0 +1,214 @@ + +# coding: utf-8 + +# # Python: podstaw ciąg dalszy +# +# ## Tomasz Dwojak +# +# ### 13 czerwca 2018 + +# ## 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 + +# In[9]: + + +def dwojak(x): + x *= 2 + return x + +l = [1, 2, 3] +s = "123" + +dwojak(l) +dwojak(s) +print(dwojak(1)) +print(l) +print(s) + + +# ## 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[0].append(1) +print(f) + + +# ## To może ``tuple``? +# * stały rozmiar, +# * immutable, +# * mogą być kluczami w słownikach + +# In[25]: + + +t = (1, "napis", []) +t[-1].append(0) +print(t) +print(len(t)) +print({t: None}) + + +# ## Funkcje cz. 2 + +# In[36]: + + +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)) + + +# ## Generatory + +# In[38]: + + +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) + + +# ## Operacje na plikach + +# In[45]: + + +plik = open("haslo.txt", 'r') +for linia in plik.readlines(): + print(linia.strip()) +print(plik.read()) +print(">>") +plik.close() + + +# In[47]: + + +with open("haslo.txt", 'r') as plik: + for linia in plik.readlines(): + print(linia) +print(plik.read()) + + +# In[48]: + + +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 + +# In[49]: + + +import os +print(os.name) + +from os import getenv +print('Nazwa uzytkownika: {}'.format(getenv("USER"))) + + +# In[50]: + + +from collections import * +print(Counter("konstantynopolitańczykowianeczka")) + +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)) +