On Feb 16, 2018 10:39, "Radek Svarz" <[email protected]> wrote:
Omlouvam se, nedoslo mi, ze to je v ramci kurzu pro zacatecniky na zkouseni
ifu.
V kazdem pripade to je fajn vstup do diskuze. Protoze mozna by stalo za to
nekde v kurzu zacit menit uvazovani z ifoveho vnoreneho pekla na mapovani.
Mapovani je a) deklarativni b) vetsinou zabere mene radku kodu a pak se v
tom naseka mene chyb
Mapovani je rozhodne fajn a take bych honna tenhle problem pouzil, ale z te
machinace s cisly v tvem kodu se mi mota hlava...
Pritom by stacilo:
if porazi[tah_pocitace][tah_hrace]:
...
elif tah_pocitace == tah_hrace:
...
else:
...
Jak to vidi ostatni?
Nejvic pythonic reseni (asi zbytecne slozite) je mit tridu Tah ktera maji
nadefinivane __gt__ a __eq__ :
if Tah(poc) > Tah(hrac):
...
elif ....
....
Takovyhle kod je prehledny, implementace se snadno otestuje a vyvine
(vyzkousis si to rucne v ipythonu, zkopirujes do testu) a jeji pouziti je
primocare.
PS: pro tu mapu, co jsem dal, by mozna pomohl obrazek :)
Kod je jako vtip, pokud ho musis vysvetlovat, pravdepodobne neni moc
dobry... ;)
PPS: v kodu ode mne jsou 2 chybky - 1 preklep a 1 algo - kdo 1. najde algo,
ma ode mne ve stredu na pyvu pivo
Dalsi ukazka nebezpeci "prilis chytreho" kodu - schovaji se v nem chyby.
Pokud v takhle jednoduche uloze udelas chybu a mas pocit, ze jeji objeveni
si zaslouzi pivo, neco je spatne.
Brian Kernighan:
Everyone knows that debugging is twice as hard as writing a program in the
first place. So if you're as clever as you can be when you write it, how
will you ever debug it?
- "The Elements of Programming Style
<https://en.wikipedia.org/wiki/The_Elements_of_Programming_Style>", 2nd
edition, chapter 2.
Radek
On Wednesday, February 14, 2018 at 7:08:00 PM UTC+1, Messa wrote:
>
> Promiň Radku, tvoje řešení je ještě méně přehledné než to se vnořenými ify.
>
> Ale hlavně, ta úloha je pro úplné začátečníky právě pro procvičení ifů.
> Navíc listy a dicty se v tom kurzu probírají až později.
>
> PM
>
> Dne 14. února 2018 17:49 Radek Svarz <[email protected]> napsal(a):
>
>> Rozhodne vadit nebude.
>>
>> Mimochodem dost casto misto vnorenych ifu je vhodnejsi si vytvorit mapu
>> hodnot, ze ktere pak vybiras. Kamen, nuzky, papir je dobry priklad - pro
>> ilustraci:
>>
>> # nastaveni
>> ruka = {"kamen":1, "nuzky":2, "papir":4}
>> rozhodci = {1: "remiza", 0.25:"Vyhral PC", 2:"Vyhral PC", 0.5: "Vyhral
>> Hrac", 4: "Vyhral Hrac"}
>>
>> # hrajeme - ty hodnoty je potreba menit :)
>> pc = ruka.get("kamen")
>> hrac = ruka.get("nuzky)
>>
>> vysledek = pc*hrac
>> print(rozhodci.get(vysledek))
>>
>>
>> PS pro pametniky - v 8 bit assembleru bychom samozrejme nenasobili, ale
>> PC bychom dali do 1. 2 bitu, hrace do 2. 2 bitu a vysledek vycetli pres
>> index mapu o velikosti 10 bajtu.
>> :)
>>
>> Radek
>>
>>
>> On Monday, February 12, 2018 at 7:27:30 PM UTC+1, Petr Houba wrote:
>>>
>>> Zdravím Vás,
>>> mám problém, jsem samouk, neumím programovat, a i přesto chci pomalu
>>> proniknout ...
>>> učím se základy Pythonu (bylo mi to doporučeno zkuseným programátorem)..
>>> prozatím to zvládám, ale už se mořím 2 hodiny s tímhle úkolem a nevím kde
>>> mám chybu ???
>>>
>>> je to ten jednoduchý program kámen, nůžky, papír viz -
>>> http://naucse.python.cz/course/pyladies/beginners/comparisons/
>>>
>>> mám to po svém vypsán v notepadu ++ tohle :
>>>
>>> # Hra kámen, nůžky, papír :)
>>>
>>> tah_pocitace = "kámen"
>>> tah_hráce = input("kámen, nůžky, nebo papír")
>>>
>>> if tah_hráce == "kámen":
>>> if tah_pocitace == "kámen":
>>> print("Remíza !")
>>> elif tah_pocitace == "nůžky":
>>> print("Vyhrál jsi !")
>>> elif tah_pocitace == "papír":
>>> print("Prohrál jsi !")
>>> elif tah_hráce == "nůžky":
>>> if tah_pocitace == "kámen":
>>> print("Prohrál jsi !")
>>> elif tah_pocitace == "nůžky":
>>> print("Remíza !"):
>>> elif tah_pocitace == "papír":
>>> print("Vyhrál jsi !")
>>> elif tah_hráce == "papír":
>>> if tah_pocitace == "kámen":
>>> print("Vyhrál jsi !")
>>> elif tah_pocitace == "nůžky":
>>> print("Prohrál jsi !")
>>> elif tah_pocitace == "papír":
>>> print("Remíza !")
>>>
>>> else:
>>> print("Nerozumím, oprav jsi to ")
>>>
>>>
>>>
>>>
>>> a když to spustím v cmd, objeví se chyba -
>>>
>>> (venv) C:\naucse-python\02>python "kamen hra.py"
>>> File "kamen hra.py", line 17
>>> print("Remíza"):
>>> ^
>>> SyntaxError: invalid syntax
>>>
>>>
>>>
>>> Předem moct děkuji ...
>>> S pozdravem začátečník Peťan
>>>
>>>
>>>
>>> p.s. ... snad vkládám na dobrý místo, nebo jestli mi doporučíte kam mám
>>> "otravovat" s radama pro začátečníka :-//
>>>
>> --
>> --
>> E-mailová skupina [email protected]
>> Správa: http://groups.google.cz/group/django-cs
>> ---
>> Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
>> „django-cs“ ve Skupinách Google.
>> Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny,
>> zašlete e-mail na adresu [email protected].
>> Chcete-li tuto diskusi zobrazit na webu, navštivte
>> https://groups.google.com/d/msgid/django-cs/352cbfdb-1369-44
>> 36-b8cb-118a1002c224%40googlegroups.com
>> <https://groups.google.com/d/msgid/django-cs/352cbfdb-1369-4436-b8cb-118a1002c224%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>> Další možnosti najdete na https://groups.google.com/d/optout.
>>
>
> --
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny
„django-cs“ ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny,
zašlete e-mail na adresu [email protected].
Chcete-li tuto diskusi zobrazit na webu, navštivte
https://groups.google.com/d/msgid/django-cs/a4a2c1ec-c361-
4681-b9eb-c51892e3f314%40googlegroups.com
<https://groups.google.com/d/msgid/django-cs/a4a2c1ec-c361-4681-b9eb-c51892e3f314%40googlegroups.com?utm_medium=email&utm_source=footer>
.
Další možnosti najdete na https://groups.google.com/d/optout.
--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte
https://groups.google.com/d/msgid/django-cs/CADoCwr08J_JomFFc9VUfxNOXa9DUFtXNUwSMgsGd6t0j%2B4zKUw%40mail.gmail.com.
Další možnosti najdete na adrese https://groups.google.com/d/optout.