Wie man bedingte Verzweigungen mit if-Anweisungen in Python schreibt

Geschäft

Erklären Sie die bedingte Verzweigung mit if-Anweisungen in Python.

  • Grundlagen der if-Anweisungen (if, elif, else)
  • Geben Sie Bedingungen mit Vergleichsoperatoren usw. an.
  • Geben Sie die Bedingungen nach Nummer, Liste usw. an.
  • Geben Sie mehrere Bedingungen oder Negationen mit logischen Operatoren (und, oder, nicht) an.
  • Bedingte Ausdrücke für neue Zeilen und mehrere Zeilen

Es gibt auch einen ternären Operator, der eine bedingte Verzweigung in einer Zeile beschreibt. Siehe den folgenden Artikel.

Grundlagen der if-Anweisungen (if, elif, else)

Die Grundform der if-Anweisung lautet wie folgt

if Conditional expression 1:
    `Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
    `Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
    `Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
    `Processing when all conditionals are false.`

Das “elif” entspricht dem “else if” in C und anderen Sprachen, und es kann eine beliebige Anzahl von “elifs” geben.

Wenn es nur einen bedingten Ausdruck gibt oder die Verarbeitung bei false nicht erforderlich ist, können die Blöcke “elif” und “else” weggelassen werden.

Geben Sie Bedingungen mit Vergleichsoperatoren usw. an.

Geben Sie die Bedingung mit einer Operation an, die einen boolschen Typ (wahr, falsch) zurückgibt, z. B. einen Vergleichsoperator.

Python-Vergleichsoperatoren sind wie folgt

BetreiberErgebnis
x < ywahr, wenn x kleiner als y ist
x <= ywahr, wenn x kleiner oder gleich y ist
x > ywahr, wenn x größer als y ist
x >= ywahr, wenn x größer oder gleich y ist
x == ywahr, wenn die Werte x und y gleich sind
x != ywahr, wenn die Werte x und y nicht gleich sindx is ywahr, wenn x und y dasselbe Objekt sindx is not ywahr, wenn x und y nicht dasselbe Objekt sindx in ywahr, wenn x in y enthalten istx not in ywahr, wenn x nicht in y enthalten ist

Beispiel. Der Einfachheit halber wird es als Funktion mit der def-Anweisung definiert.

def if_test(num):
    if num > 100:
        print('100 < num')
    elif num > 50:
        print('50 < num <= 100')
    elif num > 0:
        print('0 < num <= 50')
    elif num == 0:
        print('num == 0')
    else:
        print('num < 0')

if_test(1000)
# 100 < num

if_test(70)
# 50 < num <= 100

if_test(0)
# num == 0

if_test(-100)
# num < 0

Das Folgende kann auf eine Weise geschrieben werden, die nur in Python möglich ist. Siehe den folgenden Artikel für Details.
a < x < b

def if_test2(num):
    if 50 < num < 100:
        print('50 < num < 100')
    else:
        print('num <= 50 or num >= 100')

if_test2(70)
# 50 < num < 100

if_test2(0)
# num <= 50 or num >= 100
  • ==
  • !=

Der obige Vergleich ist ein Vergleich von Werten; um Objektidentitäten zu vergleichen, verwenden Sie Folgendes

  • is
  • is not

Beim Vergleich einer Ganzzahl und einer Gleitkommazahl beispielsweise gibt “==” true zurück, wenn die Werte gleichwertig sind, aber “is” gibt false zurück, weil es sich um unterschiedliche Objekte handelt.

i = 10
print(type(i))
# <class 'int'>

f = 10.0
print(type(f))
# <class 'float'>

print(i == f)
# True

print(i is f)
# False

Es ist auch möglich, die Bedingung zu stellen, ob eine Liste oder eine Zeichenkette ein bestimmtes Element (Zeichen) enthält.

  • in:einschließen.
  • not in:ohne
def if_test_in(s):
    if 'a' in s:
        print('a is in string')
    else:
        print('a is NOT in string')

if_test_in('apple')
# a is in string

if_test_in('melon')
# a is NOT in string

Geben Sie die Bedingungen nach Nummer, Liste usw. an.

Der bedingte Ausdruck einer if-Anweisung kann eine Zahl, eine Liste oder ein anderes Objekt sein, das nicht vom Typ bool (true, false) ist.

if 10:
    print('True')
# True

if [0, 1, 2]:
    print('True')
# True

Im bedingten Ausdruck einer Python if-Anweisung werden die folgenden Objekte als falsch angesehen.

Zahlen, die für Null, leere Zeichenketten, Listen usw. stehen, gelten als falsch; alle anderen werden als wahr angesehen.

Wie das Objekt beurteilt wird, kann mit bool() überprüft werden.

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Dies kann z. B. verwendet werden, um den Prozess einfach zu schreiben, wenn die Liste leer ist.

def if_test_list(l):
    if l:
        print('list is NOT empty')
    else:
        print('list is empty')

if_test_list([0, 1, 2])
# list is NOT empty

if_test_list([])
# list is empty

Beachten Sie, dass die Zeichenkette 'False' ebenfalls wahr ist, denn wie im obigen Beispiel gezeigt, ist jede Zeichenkette, die nicht leer ist, wahr.' Um eine bestimmte Zeichenkette wie 'True' oder 'False' in 1,0 zu konvertieren, verwenden Sie strtobool() im Modul distutils.util.

Geben Sie mehrere Bedingungen oder Negationen mit logischen Operatoren (und, oder, nicht) an.

Die logischen Operatoren (und, oder, nicht) können für die logische Konjunktion, die logische Disjunktion und die Negation von mehreren Bedingungen verwendet werden.

Betreiber(Resultat (im bedingten Ausdruck einer if-Anweisung)
x and ywahr, wenn sowohl x als auch y wahr sind
x or ywahr, wenn entweder x oder y wahr ist
not xfalsch, wenn x wahr ist, wahr, wenn x falsch ist
def if_test_and_not(num):
    if num >= 0 and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_not(5)
# num is positive odd

if_test_and_not(10)
# num is NOT positive odd

if_test_and_not(-10)
# num is NOT positive odd

Tatsächlich geben “x und y” und “x oder y” nicht Wahr oder Falsch zurück, sondern entweder x oder y. Solange sie in bedingten Ausdrücken in if-Anweisungen verwendet werden, besteht kein Grund zur Sorge, da sie entweder Wahr oder Falsch auswerten. Siehe den folgenden Artikel für weitere Einzelheiten.

Es ist möglich, und und oder mehr als einmal zu verwenden.

def if_test_and_not_or(num):
    if num >= 0 and not num % 2 == 0 or num == -10:
        print('num is positive odd or -10')
    else:
        print('num is NOT positive odd or -10')

if_test_and_not_or(5)
# num is positive odd or -10

if_test_and_not_or(10)
# num is NOT positive odd or -10

if_test_and_not_or(-10)
# num is positive odd or -10

Bedingte Ausdrücke für neue Zeilen und mehrere Zeilen

Wenn mehrere bedingte Ausdrücke verwendet werden, indem sie mit “und” oder “oder” verbunden werden, und jede Zeile lang wird, ist es manchmal notwendig, den bedingten Ausdruck umzubrechen und in mehreren Zeilen zu schreiben.

Ein Zeilenumbruch kann durch einen Backslash oder durch Einschließen der gesamten Zeile in Klammern erfolgen.

def if_test_and_backslash(num):
    if num >= 0 \
       and not num % 2 == 0:
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_backslash(5)
# num is positive odd

def if_test_and_brackets(num):
    if (num >= 0
        and not num % 2 == 0):
        print('num is positive odd')
    else:
        print('num is NOT positive odd')

if_test_and_brackets(5)
# num is positive odd

Sie können einen Backslash verwenden, um eine Zeile beliebig oft umzubrechen. Ebenso können Sie eine Zeile innerhalb von Klammern beliebig oft umbrechen. Es gibt keine Begrenzung für die Einrückung.

Beachten Sie, dass diese Technik überall in Python-Code verwendet werden kann, nicht nur in if-Anweisungen.