Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Jeden nový cyklus a procvičování > Zpětná vazba k domácím projektům

Zpětná vazba k projektům lekce Jeden nový cyklus a procvičování

Pochvala za aktivitu

  • Věrka
  • Aleš
  • Marie
  • Markéta
  • Martina
  • Martin
  • Lenka
  • všichni, kdo (do)odevzdali domácí projekty...

Cyklus for...else

In [1]:
for i in range(5):
    print(i)
    if i == 2:
        break
else:
    print("Jak vypsat tento text?")
0
1
2
In [2]:
for i in range(5):
    print(i)
    if i == 2:
        print("V cyklu nesmí nastat break, aby se provedl kód za else:")
else:
    print("Jak vypsat tento text?")
0
1
2
V cyklu nesmí nastat break, aby se provedl kód za else:
3
4
Jak vypsat tento text?

Nastavení hodnoty proměnné dle podmínky

In [3]:
mam_hlad = True
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
8
In [4]:
mam_hlad = False
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
2
In [5]:
mam_hlad = 0
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
2
In [6]:
mam_hlad = 1
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
8
In [7]:
mam_hlad = 2
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
8
In [8]:
mam_hlad = "0"
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
8
In [9]:
mam_hlad = "1"
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
8
In [10]:
mam_hlad = ""
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
2
In [11]:
mam_hlad = None
koupit_rohliku = 8 if mam_hlad else 2
print(koupit_rohliku)
2

Shrnutí promenna = A if VYRAZ else B

Nastav proměnnou na hodnotu A (v našem příkladu 8), když je splněna podmínka za if (např. True, nenulové číslo, neprázdný řetězec), jinak nastav na hodnotu B (v našem příkladu 2).

Na stejném principu funguje nám známé if vyraz: nebo while vyraz:, tzn. provede se nebo provádí se pro: True, nenulové číslo, neprázdný řetězec

Nastavení hodnot proměnných v jednom kroku (thanks to Věrka!)

In [12]:
a = 8
b = 2
a, b = b, a
print(a)
print(b)
2
8
In [46]:
a, b, c = 1, 2, 3
print(a, b, c)
1 2 3

Co funkce dělá vs. vrací

In [34]:
navratova_hodnota = print("Ahoj")
navratova_hodnota == None
Ahoj
Out[34]:
True
In [36]:
from math import sin
navratova_hodnota = sin(0.5)  # 0.479425538604203
navratova_hodnota != None
Out[36]:
True

Převod str -> int/float

In [41]:
int('8.9')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-41-87adb426db4f> in <module>
----> 1 int('8.9')

ValueError: invalid literal for int() with base 10: '8.9'
In [42]:
float('8.9')
Out[42]:
8.9
In [43]:
int('8')
Out[43]:
8

Cyklus for a řetězce

In [48]:
for c in 'Ahoj', 'světe!':
    print(c)
Ahoj
světe!
In [47]:
for c in 'Ahoj světe!':
    print(c)
A
h
o
j
 
s
v
ě
t
e
!

Cyklus for - zobecnění

In [ ]:
for i in ...:
    # nejaky kod

Cyklus for provádí opakovaně odsazený kód tak dlouho, jak může / pokud může (ani jednou, několikrát, "donekonečna"). Pro každý jednotlivý průchod načte z toho, co je za in aktuální hodnotu do proměnné (v našem příkladu i), kterou lze uvnitř cyklu použít.

Příklady

In [1]:
for i in range(0):
    print(i)
# odsazeny kod se nikdy neprovede
In [51]:
for i in range(2):
    print(i)
0
1
In [ ]:
for i in iter(int, 1):  # iter(int, 1) dává: 0, 0, 0, 0, 0...
    print(i)
# vypisuje donekonecna:
# 0
# 0
# 0
# 0
# 0
# ...

Procvičování online

Na co myslet při vývoji

  • Nástroje pro spolupráci (tzv. groupware)
  • "pastebin" služby (pozor, neukládat hesla a licencemi chráněný kód)
  • Snažit se ctít zadání, pozor na přidanou funkcionalitu
  • Zadání projektu:
    • hra Oko bere: popis pravidel (rozbor na dílčí problémy -> "kartičky" -> pořadí/priority)
    • Lampa: ukázka vstupu / výstupu (reálné testovací případy)
  • Nástroje pro tzv. debugování kódu: viz Slack
  • Kód:

    • Komentáře, oč se jedná, licence, autor, rok...

      # Washing machine robot for every family in the world
      #
      # Copyright (c) 2015  Some Company, Inc.
      #
      # Permission is hereby granted, free of charge, to any person obtaining a copy
      # of this software and associated documentation files (the "Software"), to deal
      # in the Software without restriction, including without limitation the rights
      # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      # copies of the Software, and to permit persons to whom the Software is
      # furnished to do so, subject to the following conditions:
      #
      # The above copyright notice and this permission notice shall be included in all
      # copies or substantial portions of the Software.
      #
      # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
      # SOFTWARE.
      #
      # Written by A B <ab@example.com>
      #            C D <cd@example.com>
      #            E F <ef@example.com>
    • Importy
      • from turtle import forward
    • Výchozí hodnoty proměnných
      • pocet_vystupu_na_mt_everest = 0
    • Načtení vstupů
      • input(...)
    • Ošetření vstupů
      • (A)no/(N)e? Nevím.
    • Provedení klíčové funkcionality
      • Záznam důležitých stavů do tzv. log souborů
      • Včasné chybové hlášky uživateli/-ce
      • Shromáždění informací pro výstup
    • Výstup
      • Pro "lidské oko" versus pro stroj
      • Souhrny/statistiky versus data

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.