Commit 1ad52a66 authored by cermak's avatar cermak
Browse files

Lesson 11

parent e0371afb
Pipeline #24089 passed with stage
in 1 minute and 35 seconds
...@@ -33,3 +33,13 @@ class Kocka(Zvire): ...@@ -33,3 +33,13 @@ class Kocka(Zvire):
def slysi_na(self, jmeno): def slysi_na(self, jmeno):
# Copak kočka slyší na jméno? # Copak kočka slyší na jméno?
return False return False
class Pes(Zvire):
_vrcim = False
def ozvi_se(self):
"""Vydá zvuk daného zvířete."""
self._vrcim = not self._vrcim
if self._vrcim:
print(self.jmeno, "říká:", self.zvuk)
\ No newline at end of file
\documentclass{beamer} \documentclass{beamer}
\title{Programování 1: Soubory a výjimky} \title{Programování 1.11: Soubory a výjimky}
\input ../slidemac.tex \input ../slidemac.tex
...@@ -26,7 +26,7 @@ Nás budou zajímat hlavně {\bf textové soubory:} ...@@ -26,7 +26,7 @@ Nás budou zajímat hlavně {\bf textové soubory:}
\begin{itemize} \begin{itemize}
\item Skládají se ze {\bf znaků} převedených na bajty nějakým {\bf kódováním}, \item Skládají se ze {\bf znaků} převedených na bajty nějakým {\bf kódováním},
nejčastěji: nejčastěji
\begin{itemize} \begin{itemize}
\item ASCII (\uv{\kern1pt anglická abeceda} o~95 znacích) \item ASCII (\uv{\kern1pt anglická abeceda} o~95 znacích)
...@@ -46,28 +46,24 @@ nejčastěji: ...@@ -46,28 +46,24 @@ nejčastěji:
\begin{frame}{Jednoduchý příklad} \begin{frame}{Jednoduchý příklad}
\pycode{file-triv.py} {\bf open(jmeno\_souboru, mode, encoding)} otevírá soubor:
{\bf open} otevírá soubor, dostává:
\begin{itemize} \begin{itemize}
\item jméno souboru \item {\tt mode}:
\item mód přístupu:
\begin{itemize} \begin{itemize}
\item {\tt r} = čtení \item {\tt r} = čtení (default)
\item {\tt w} = zápis (založí/vyprázdní soubor) \item {\tt w} = zápis (založí/vyprázdní soubor)
\item {\tt a} = zápis na konec (append) \item {\tt a} = zápis na konec (append)
\item {\tt r+/w+} = čtení i zápis \item {\tt r+} = čtení i zápis
\item {\tt w+} = jako r+ ale založí/vyprázdní soubor
\item {\tt rb} = binární čtení (bajty, ne text) \item {\tt rb} = binární čtení (bajty, ne text)
\end{itemize} \end{itemize}
\item {\tt encoding=}kódování (default: podle OS) \item {\tt encoding=}kódování (default: podle OS)
\end{itemize} \end{itemize}
\bigskip Explicitnimu {\bf close()} se můžeme vyhnout pomocí {\tt with}.
Explicitnimu {\bf close} se můžeme vyhnout takto:
\pycode{file-with.py} \pycode{file.py}
\end{frame} \end{frame}
...@@ -131,44 +127,6 @@ Vždy je k~dispozici: ...@@ -131,44 +127,6 @@ Vždy je k~dispozici:
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\begin{frame}{Formátování}
\py{%
"\{\} leží \{\}".format("kočka", "na okně")
}{%
'kočka leží na okně'
}
\py{%
"\{1\} leží \{0\}".format("kočka", "na okně")
}{%
'na okně leží kočka'
}
\py{%
"\{kdo\} leží \{kde\}".format(kdo="pes", kde="v boudě")
}{%
'pes leží v boudě'
}
\py{%
kdo="lenochod"\\
kde="na větvi"\\
f"\{kdo\} leží \{kde\}"
}{%
'lenochod leží na větvi'
}
\py{%
"\{0:05\} < \{1:05\}".format(1, 2)
}{%
'00001 < 00002' \cmt{(další varianty viz dříve)}
}
\end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Hlášení chyb} \begin{frame}{Hlášení chyb}
{\bf test.py:} {\bf test.py:}
...@@ -248,6 +206,14 @@ Traceback (most recent call last):\\ ...@@ -248,6 +206,14 @@ Traceback (most recent call last):\\
RuntimeError: Jejda! RuntimeError: Jejda!
} }
\py{%
if not condition:\\
~~~~raise AssertionError()
}{%
[...]\\
AssertionError
}
\py{% \py{%
assert 1 == 2 assert 1 == 2
}{% }{%
...@@ -256,14 +222,31 @@ AssertionError ...@@ -256,14 +222,31 @@ AssertionError
} }
\py{% \py{%
assert 1 == 2, "Svět se nezbláznil" assert 1 == 2, "Veselé vánoce!"
}{% }{%
[...]\\ [...]\\
AssertionError: Svět se nezbláznil AssertionError: Veselé vánoce!
} }
\end{frame} \end{frame}
% ----------------------------------------------------------------------
\begin{frame}{Úkoly na vánoční hodinu}
\begin{itemize}
\item Vánoční úloha v recodexu (5 bodů, do konce hodiny, první vyhrává vánoční pivo)
\item nebo:
\item Spočítejte, kolik je v souboru řádků, slov a viditelných znaků (tedy bez mezer a konců řádků)
\item Zkopíruje soubor do jiného souboru, aby řádky šly v opačném pořadí
\item Najděte na každém řádku všechna čísla (oddělená mezerami) a vypíše jejich součet; slova, která nejsou čísly, ignoruje.
\end{itemize}
\end{frame}
% ---------------------------------------------------------------------- % ----------------------------------------------------------------------
\end{document} \end{document}
f = open('soubor.txt', 'w')
f.write('Hej mistře!\n')
f.close()
f = open('soubor.txt', 'w')
f.write('Hej mistře!\n')
f.close()
# alternativně:
with open('soubor.txt', 'w') as f: with open('soubor.txt', 'w') as f:
f.write('Hej mistře!\n') f.write('Hej mistře!\n')
\documentclass{beamer} \documentclass{beamer}
\title{Programování 1: Standardní knihovna} \title{Programování 1.12: Standardní knihovna}
\input ../slidemac.tex \input ../slidemac.tex
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment