zopletalova / python-012021

0 stars 0 forks source link

Programy 6-7 #3

Closed zopletalova closed 3 years ago

zopletalova commented 3 years ago

Ahoj Andy,

@andywaltlova
posílám první dva programy - tedy 06 a 07.

Funguje to :-) nicméně možná to ještě půjde zjednodušit...

ad program 06 Nepřišla jsem na způsob, jak se jednoduše zeptat: Existuje zadaný region ve sloupci region? (jde to, aniž by člověk procházel pomocí for ten slovník?) Nezbylo tudíž, než procházet ten slovník a porovnávat hodnoty ve sloupci "region" se zadanou hodnotou. Abych mohla následně i vyhodit hlášku, pokud ve slovníku "region" nenajdu, vytvořila jsem si pomocnou proměnnou "i", do které jsem načítala počet států v regionu. Když už jsem ji měla, tak mi přišlo užitečné přidat na konec navíc shrnutí, kolik těch států v regionu celkem je...

ad program 07 pokud tam bude něco ke zjednodušení, tak viz výše, jinak mě už další zjednodušení nenapadá :-)

Díky moc Zuzka

andywaltlova commented 3 years ago

6. úkol :heavy_check_mark:

7. úkol :heavy_check_mark:

zopletalova commented 3 years ago

Ahoj Andy, @andywaltlova se sedmičkou máš samozřejmě pravdu, já se tam totiž trochu motala s přidáváním klíčů a hodnot do slovníku, musela jsem si znovu vyhledat, jak na to, a z radosti, že se to nakonec povedlo, jsem to už zapomněla dotáhnout a domyslet :-) Snad už je to ok. Kouknu ještě na ta zjednodušení a další vychytávky, co jsi psala. A ještě jeden dotaz - experimentovala jsem s jednoduchými a dvojitými uvozovkami a zdá se, že v některých případech je to jedno - viz - item["population"] - item['population'] - vážně je to jedno, nebo je lepší se držet jednoho nebo druhého, bo by mi to mohlo někde, třeba ve složitějších věcech, způsobit problém? Děkuji :-) Z

andywaltlova commented 3 years ago

Ahoj,

uvozovky je opravdu jedno, ktere pouzivas :) Ale vzdy by si se mela drzet jednoho druhu jako hlavniho. Kdyz pises f stringy a potrebujes napsat dovnitr textu uvozovku, tak tam uz si musis ty vnejsi uvozovky vybrat podle toho, kterou chces uvnitr pouzit :)

Jedine pokrocilejsi, co me pak napada je nacitani json souboru pomoci modulu json. Ale to se týká spíše toho, že json soubor je validní pouze s double quotes, tedy pokud chces napriklad python slovnik ulozit jako json soubor, tak musi mit vsude ". JSON soubory se casto pouzivaji pokud ziskavas data z nejakeho API (aplikacni rozhrani), takovy zaklad je i v materialech pro datovou akademii.

Ja jsem treba zvykla na anglickou klavesnici, takze pouzivam spis jednoduche uvozovky. Kdyz jsem se na toto ptala v praci, tak me odkazali na coding guideline, ktery muj tym pouziva a je v nem i napsano, jaka je preferovana varianta. Vetsinou to pak zalezi na tom, jake uvozovky uz soubor ktery chci upravit pouziva a musim se prizpusobit :)

zopletalova commented 3 years ago

Ahoj Andy, posílám zbytek úkolů. ad ještě 07 - metodu get a existujici a neexistujici jsem zatim pro tento případ nebyla schopná aplikovat, navíc mám dojem, že mi to rozhazuje i to počítání států, musím na to ještě kouknout. :-)

Ad další úkoly: Přiznám se, že si nejsem jistá, jestli jsem vždy pochopila zadání:

08 - beru to tak, že jediná přijatelná zadání jsou +420 a devět číslic nebo devět číslic (a mezitím kdekoliv mohou být nuly). Neřeším, pro tenhle případ, jestli náhodou devítimístné telefonní číslo nezačíná nulou apod.

09 - tady jsem měla trochu problém s pochopením zadání - bylo tam něco, že do funkce má vstupovat slovník... nějak mi přišlo jednodušší "poslat", do funkce jen ty známky - rovnou jenom jako list, nikoliv dictionary (proč bych tam "tahala" názvy předmětů?). Ve chvíli, kdy měl cyklus být v těle programu a funkce měla jenom počítat, mi to takhle přišlo snáz řešitelné. Ale nevím.

10 - Tady jsem zas měla zmatek, jak naložit s nepovinnými argumenty, nebo parametry, nebo jak se jim správně říká. Vlastně jsem narazila na to, že sice vím, že existují, ale nevím, k čemu vlastně v praxi jsou. Je to tak, že je do funkce z těla programu můžu a nemusím poslat (a tím přenastavit nebo nepřenastavit defaultní hodnotu), ale spíš se čeká, že s nima budu pracovat, až když se zavolá funkce? Tedy v kódu uvnitř funkce? Tam jsem zjišťování jejich hodnoty taky nakonec dala, bo v případě pokusu nechat zjišťování v těle programu mi pak "nepovinnost" těch argumentů rázem přestala dávat smysl a kód dost nabobptal.

Díky moc a zatím ahoj :-) Z.

andywaltlova commented 3 years ago

8. úkol :heavy_check_mark:

10. úkol :heavy_check_mark:

Nad tímto úkolem se ještě zamysli :) Opravit to muzes vpodstate dvěma zpusoby aby to davalo smysl:

  1. nechas funkci aby se postarala o zjisteni konference a newsletteru (potom ale ty parametry nepotrebuje vubec mit, protoze si to sama zjisti)
  2. body prictes jen zaklade zjisteni zda je parametr True nebo False (a zjisteni od uzivatele muzes dat do main kodu, funkci pak uz jen predas bool hodnotu - to co main kod zjisti od uzivatele, napriklad uzivatel rekne ze se zucastnil konference, tak zavolas funkci s nastavnym parametrem konf )

Skvělá práce, jen tak dál 👍

zopletalova commented 3 years ago

Ahoj Andy, tak jsem tu desítku udělala způsobem 2. Ptala jsem se včera Jirky na konzultacích, a říkal, že mu šlo hlavně o to, abychom si uvědomily, že někdy mají funkce tolik parametrů, že někdy je těch nepovinných dobré využít. Tady mi to ale stejně furt nedává smysl - v případě té dvojky - tebou navrženého řešení - zas nepotřebuju jejich nepovinnost, přednastavení hodnoty v záhlaví funkce... Samozřejmě, mohla bych ještě do hlavního programu dodat podmínky, za kterých volám funkci se třemi, čtyřmi, nebo pěti parametry - podle toho, co uživatel zadal, ale to mi přijde z praktického hlediska pro tento příklad už úplně mimo. A je ještě jedna možnost - nezjišťovat pro tento případ ty hodnoty vůbec, ani v hlavním programu, ani ve funkci, tam s nimi jenom teoreticky počítat, a prostě na tom demonstrovat, že je fakt zadat nepotřebuju. Byly by tedy v tomto případě k ničemu, ale člověk si samozřejmě může představit, že toto dílko může být součástí nějakého většího celku, který by funkci za nějakých okolností tyto hodnoty čas od času poslal... Kdyžtak dej vědět, jestli úprava OK a já se budu těšit dál! :-) Z.

andywaltlova commented 3 years ago

Ahoj, Super, jasně že ti to uznám!

K těm nepovinným parametrům ti můžu dát ještě třeba příklad z praxe. Mám funkci která vypadá nějak takto:

def get_data_from_API(url, query=None):
    pass #nejaky kod ktery nemusime zatim resit

Účelem této funkce je dostat nějaká data pomocí zaslání požadavku na server, pokud query nezadáš, dostaneš všechny záznamy, které na serveru (dané url) jsou, pokud zadáš konkrétní query dostaneš vyfiltrované výsledky tak aby splňovali požadavky v query (query je v tomto připade slovník, kde můžeš například specifikovat id, title, nebo nějakou vlastnost daného záznamu).

Issue tedy uzavírám, ukolu považuji za splněné :) Komentovat jde samozřejmě stále.