Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Slovníky > Zpětná vazba k domácím projektům

Zpětná vazba k lekci Slovníky

Pozor na globální definice proměnných

In [1]:
mocniny_dict2 = {}

def mocniny2(n):
    for i in range(1, n+1):
        mocniny_dict2[i] = i**2
    return mocniny_dict2

print(mocniny2(10))  # očekáváme: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
print(mocniny2(4))  # očekáváme: {1: 1, 2: 4, 3: 9, 4: 16}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

input uvnitř funkcí - není zcela vhodné řešení

Je dobré snažit se ctít zadání, tzn. funkci input pro vstup z klávesnice držet mimo těla funkcí a získané hodnoty proměnných pak předávat do funkcí skrze jejich argumenty.

Debugovací printy

Po dokončení úprav kódu je vhodné debugovací printy odstranit nebo zakomentovat, aby uživatelský výstup neobsahoval nepotřebné informace navíc.

Funkce sum a slovníky

In [5]:
mocniny = {1: 1, 2: 4, 3: 9, 4: 16}

print(sum(mocniny.keys()))
print(sum(mocniny.values()))
10
30

Dictionary Comprehension

In [14]:
{k + 1: v ** 2 for k, v in enumerate(range(1, 11))}
Out[14]:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

Pozor na překlepy

In [15]:
print({10: 30})  # dict
print({10, 30})  # set
{10: 30}
{10, 30}

range - meze od/do - pozor, co tam patří a co už ne

In [20]:
for i in range(1, 4):
    print(i)
1
2
3

Funkce vrací versus dělá

In [22]:
def vraci():
    return "Ahoj světe - vrací!"

def dela():
    print("Ahoj světe - dělá!")


print(vraci())
dela()
Ahoj světe - vrací!
Ahoj světe - dělá!

Pozor na přepsání názvu

In [25]:
def mocniny(n):
    slovnik_mocnin = dict()
    for i in range(1, n + 1):
        slovnik_mocnin[i] = i ** 2
    return slovnik_mocnin
        
mocniny = mocniny(4)  # definice funkce mocniny je nyní přepsaná slovníkem: {1: 1, 2: 4, 3: 9, 4: 16}
print(mocniny)
mocniny = mocniny(10)  # TypeError: 'dict' object is not callable
print(mocniny)
{1: 1, 2: 4, 3: 9, 4: 16}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-25-936c66edabe9> in <module>
      7 mocniny = mocniny(4)  # definice funkce mocniny je nyní přepsaná slovníkem: {1: 1, 2: 4, 3: 9, 4: 16}
      8 print(mocniny)
----> 9 mocniny = mocniny(10)  # TypeError: 'dict' object is not callable
     10 print(mocniny)

TypeError: 'dict' object is not callable

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