Dvě podmínky ve while

Arama

Dvě podmínky ve while
« kdy: 28. 08. 2015, 12:34:01 »
Ahojte, pordte prosim jak vytvorit 2 podminky pro while v pythonu.

Kód: [Vybrat]
while num1 == 0 AND num2 == 0:
   pass
potrebuji aby while bezelo pokud budou obe promene mít hodnotu 0. dekuji
« Poslední změna: 28. 08. 2015, 23:03:33 od Roman Bořánek »


tomasfuk

Re:Dve podminky ve while
« Odpověď #1 kdy: 28. 08. 2015, 14:12:34 »
nejsem velkej programator a už vůbec ne v pythonu, ale co udělat bool z těch podmínek a pak do while dát bool?  ;D

Wily

Re:Dve podminky ve while
« Odpověď #2 kdy: 28. 08. 2015, 14:39:17 »
tohle?
Kód: [Vybrat]
x = 0
y = 0

while x is 0 and y is 0:
    print "running"

mko

Re:Dve podminky ve while
« Odpověď #3 kdy: 28. 08. 2015, 14:58:20 »
Tohle porovnávání pomocí is není dobrý příklad. V tomto konkrétním případě kód sice bude fungovat správně, při testování na rovnost s čísly nad 256, s floaty a jinými objekty kód nebude fungovat správně nebo pouze někdy. Tento test na rovnost by měl používat ==.

Kit

Re:Dve podminky ve while
« Odpověď #4 kdy: 28. 08. 2015, 16:06:41 »
Však to máš skoro dobře:
Kód: [Vybrat]
while num1 == 0 and num2 == 0:
    pass

Doporučuji však použít závorky i tam, kde nejsou vyžadovány:
Kód: [Vybrat]
while (num1 == 0) and (num2 == 0):
    pass


Inkvizitor

Re:Dve podminky ve while
« Odpověď #5 kdy: 28. 08. 2015, 16:09:34 »
Tohle porovnávání pomocí is není dobrý příklad. V tomto konkrétním případě kód sice bude fungovat správně, při testování na rovnost s čísly nad 256, s floaty a jinými objekty kód nebude fungovat správně nebo pouze někdy. Tento test na rovnost by měl používat ==.

Ještě doplním: Bude to fungovat s malými čísly v dosavadním CPythonu a nikdo nezaručuje, že to tak bude navěky. Porovnávat pomocí "is" a "is not" má smysl porovnávat takto jedině singleton objekty (konkrétně None) nebo pro skutečné zjišťování identity dané instance. NIKDY čísla!

karel

Re:Dve podminky ve while
« Odpověď #6 kdy: 28. 08. 2015, 16:10:25 »
koukam co mu nemaka a on si tam cpe AND s velkyma pismenama

Snow

Re:Dve podminky ve while
« Odpověď #7 kdy: 28. 08. 2015, 16:39:58 »
Však to máš skoro dobře:
Kód: [Vybrat]
while num1 == 0 and num2 == 0:
    pass

Doporučuji však použít závorky i tam, kde nejsou vyžadovány:
Kód: [Vybrat]
while (num1 == 0) and (num2 == 0):
    pass
A to jako proč?

Kit

Re:Dve podminky ve while
« Odpověď #8 kdy: 28. 08. 2015, 16:43:19 »
Však to máš skoro dobře:
Kód: [Vybrat]
while num1 == 0 and num2 == 0:
    pass

Doporučuji však použít závorky i tam, kde nejsou vyžadovány:
Kód: [Vybrat]
while (num1 == 0) and (num2 == 0):
    pass
A to jako proč?

Bo tak to ma byt a tak je to spravne.

Snow

Re:Dve podminky ve while
« Odpověď #9 kdy: 28. 08. 2015, 16:52:34 »
Však to máš skoro dobře:
Kód: [Vybrat]
while num1 == 0 and num2 == 0:
    pass

Doporučuji však použít závorky i tam, kde nejsou vyžadovány:
Kód: [Vybrat]
while num1 == 0 and num2 == 0:
    pass
A to jako proč?

Bo tak to ma byt a tak je to spravne.
Obojí funguje stene, závorky jsou tam zbytečně, proto nevidím jediný sebemenší důvod je tam používat, maximálně někdo může namítat čitelnost, ale mě osobně to příjde čitelnější bez zbytečných závorek...

k

Re:Dve podminky ve while
« Odpověď #10 kdy: 28. 08. 2015, 16:56:51 »
Obojí funguje stene, závorky jsou tam zbytečně, proto nevidím jediný sebemenší důvod je tam používat

Protože je na první pohled jasné co a v jakém pořadí se vykoná, jak to pisatel myslel.

Snow

Re:Dve podminky ve while
« Odpověď #11 kdy: 28. 08. 2015, 17:01:54 »
Obojí funguje stene, závorky jsou tam zbytečně, proto nevidím jediný sebemenší důvod je tam používat

Protože je na první pohled jasné co a v jakém pořadí se vykoná, jak to pisatel myslel.
A bez závorek ti to jasné není? Nepřipadám si jako nějakej génius, ale i tak mě sou jasná složitější ifi, či while a světe div se, bez závorek...
Ale asi chápu, že to bude stejná debata jako tabulátor Vs. mezery... :-)

k

Re:Dve podminky ve while
« Odpověď #12 kdy: 28. 08. 2015, 17:34:26 »
A bez závorek ti to jasné není? Nepřipadám si jako nějakej génius, ale i tak mě sou jasná složitější ifi, či while a světe div se, bez závorek...
Ale asi chápu, že to bude stejná debata jako tabulátor Vs. mezery... :-)

To tedy vůbec není jasné :) Klidně se to může zpracovat takhle, podle toho jaký materiál si autoři programovacího jazyka zrovna šlehli:
0 and num2 -> false
num1 == false -> true
true == 0 -> false
Proto se tam všude píšou závorky, i když je to zdánlivě zbytečné. Diskuze nebude, protože je to jasné.

Snow

Re:Dve podminky ve while
« Odpověď #13 kdy: 28. 08. 2015, 17:42:33 »
A bez závorek ti to jasné není? Nepřipadám si jako nějakej génius, ale i tak mě sou jasná složitější ifi, či while a světe div se, bez závorek...
Ale asi chápu, že to bude stejná debata jako tabulátor Vs. mezery... :-)

To tedy vůbec není jasné :) Klidně se to může zpracovat takhle, podle toho jaký materiál si autoři programovacího jazyka zrovna šlehli:
0 and num2 -> false
num1 == false -> true
true == 0 -> false
Proto se tam všude píšou závorky, i když je to zdánlivě zbytečné. Diskuze nebude, protože je to jasné.
Jenže autor se ptal ohledně pythonu, tedy bavíme se tady celou dobu o pythonu, kde závorky vyžadováné nejsou, proto je naprosto nesmyslné je tam psát, v tom je python právě krásný, nepoužívá bordel jako () ; {} atp... Takže diskuze že v jiném jazyce by to mohlo fungovat jinak je naprosto zcestná.

karel

Re:Dve podminky ve while
« Odpověď #14 kdy: 28. 08. 2015, 17:47:25 »
A bez závorek ti to jasné není? Nepřipadám si jako nějakej génius, ale i tak mě sou jasná složitější ifi, či while a světe div se, bez závorek...
Ale asi chápu, že to bude stejná debata jako tabulátor Vs. mezery... :-)

To tedy vůbec není jasné :) Klidně se to může zpracovat takhle, podle toho jaký materiál si autoři programovacího jazyka zrovna šlehli:
0 and num2 -> false
num1 == false -> true
true == 0 -> false
Proto se tam všude píšou závorky, i když je to zdánlivě zbytečné. Diskuze nebude, protože je to jasné.

Jakym zpusobem je ta podminka vyhodnocena je presne definovane, a zavorky tam nepatri, naopak neopodstatnene pouzivani zavorek muze spomalit vyhodnoceni.
Ale on by si tu nekdo musel precist aspon par veci o tom v cem dela a to preci po nikom nemuzeme chcit.