Líné/zkrácené vyhodnocování – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Líné/zkrácené vyhodnocování – Python – Fórum – Programujte.comLíné/zkrácené vyhodnocování – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Martin
~ Anonymní uživatel
1377 příspěvků
4. 4. 2012   #1
-
0
-

Ahoj, chtěl jsem, aby fungoval následující kus kódu. Myslel jsem, že první podmínka hodí false a tudíž se druhá (spojena spojkou & )  již nebude vyhodnocovat, ale tak to nefunguje. Nevíte jak to udělat v jedné podmínce? Kód:

# -*- coding: utf-8 -*-

import math

body=[float('nan'),float('nan'),0,float('nan')]
x=[4,5,6,5]

if ( not(math.isnan(body[1]))  &  (x[body[1]] >2)  ):
    print x[1]

Nahlásit jako SPAM
IP: 90.179.136.–
Reklama
Reklama
KIIV+42
God of flame
4. 4. 2012   #2
-
0
-

no & je obvykle bitovy and... tj. kazdy bit na odpovidajici pozici zvlast (tj. potrebuje to OBA operandy)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1377 příspěvků
4. 4. 2012   #3
-
0
-

#2 KIIV
Mám tomu tedy rozumět tak, že v Pythonu neexistuje zkrácené vyhodnocování výrazů jako u jiných jazyků? Dík

Nahlásit jako SPAM
IP: 90.179.136.–
KIIV+42
God of flame
4. 4. 2012   #4
-
0
-

tomu mas rozumet tak, ze jsou dva druhy operatoru:

* logicke - ktere berou 0 jako log 0 a cokoliv jineho jako log 1 - u nich lze delat zkracene vyhodnocovani

* bitove - ktere zpracuji jednotlive bity v cislech zvlast (ten ted pouzivas...)

takze  & | ^ ~ ... jsou po bitech     a   and or nor  jsou binarni

viz: http://www.tutorialspoint.com/python/python_basic_operators.htm

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1377 příspěvků
4. 4. 2012   #5
-
0
-

OK, už to funguje, dík:

# -*- coding: utf-8 -*-

import math

body=[float('nan'),float('nan'),0,float('nan')]
x=[4,5,6]

if ( not(math.isnan(body[2]))  and  (x[body[2]] >2)  ):
    print x[1]

Nahlásit jako SPAM
IP: 90.179.136.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 43 hostů

Podobná vlákna

Vyhodnocování podmínek — založil Míša

Line - pomoc — založil Wo1f

PHP off-line — založil pali6

On-line fotogalerie — založil Vítězslav Titl

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý