1090 Stimmen

Pythons Äquivalent von && (logisch-und) in einer if-Anweisung

Das klappt nicht:

if cond1 && cond2:

13voto

geekidharsh Punkte 3301

Sie verwenden and y or um logische Operationen wie in C, C++ durchzuführen. Wie buchstäblich and es && y or es || .


Schauen Sie sich dieses lustige Beispiel an,

Angenommen, Sie wollen Logic Gates in Python erstellen:

def AND(a,b):
    return (a and b) #using and operator

def OR(a,b):
    return (a or b)  #using or operator

Versuchen Sie jetzt, sie anzurufen:

print AND(False, False)
print OR(True, False)

Dies wird ausgegeben:

False
True

Ich hoffe, das hilft!

9voto

Wahrscheinlich ist dies nicht der beste Code für diese Aufgabe, aber es funktioniert -

def front_back(a, b):

 if len(a) % 2 == 0 and len(b) % 2 == 0:
    print a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):]

 elif len(a) % 2 == 1 and len(b) % 2 == 0:
    print a[:(len(a)/2)+1] + b[:(len(b)/2)] + a[(len(a)/2)+1:] + b[(len(b)/2):] 

 elif len(a) % 2 == 0 and len(b) % 2 == 1:
     print a[:(len(a)/2)] + b[:(len(b)/2)+1] + a[(len(a)/2):] + b[(len(b)/2)+1:] 

 else :
     print a[:(len(a)/2)+1] + b[:(len(b)/2)+1] + a[(len(a)/2)+1:] + b[(len(b)/2)+1:]

-2voto

Uki D. Lucas Punkte 456

Verwendung von "und" im Konditional. Ich verwende dies oft beim Importieren in Jupyter Notebook:

def find_local_py_scripts():
    import os # does not cost if already imported
    for entry in os.scandir('.'):
        # find files ending with .py
        if entry.is_file() and entry.name.endswith(".py") :
            print("- ", entry.name)
find_local_py_scripts()

-  googlenet_custom_layers.py
-  GoogLeNet_Inception_v1.py

-3voto

William You Punkte 1

Ein einzelner & (nicht doppelt && ) reicht aus, oder Sie können, wie in der oberen Antwort vorgeschlagen, "und" verwenden. Ich habe auch dies in Pandas gefunden

cities['Is wide and has saint name'] = (cities['Population'] > 1000000) 
& cities['City name'].apply(lambda name: name.startswith('San'))

Wenn wir das "&" durch "und" ersetzen, wird es nicht funktionieren.

-4voto

Wirefall Punkte 1

Vielleicht mit & statt % ist schneller und erhält die Lesbarkeit

andere Tests gerade/ungerade

x ist gerade ? x % 2 == 0

x ist ungerade ? nicht x % 2 == 0

ist vielleicht klarer mit bitweise und 1

x ist ungerade ? x & 1

x ist gerade ? nicht x & 1 (nicht ungerade)

def front_back(a, b):
    # +++your code here+++
    if not len(a) & 1 and not len(b) & 1:
        return a[:(len(a)/2)] + b[:(len(b)/2)] + a[(len(a)/2):] + b[(len(b)/2):] 
    else:
        #todo! Not yet done. :P
    return

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X