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)
- 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
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
Betreiber | Ergebnis |
---|---|
x < y | wahr, wenn x kleiner als y ist |
x <= y | wahr, wenn x kleiner oder gleich y ist |
x > y | wahr, wenn x größer als y ist |
x >= y | wahr, wenn x größer oder gleich y ist |
x == y | wahr, wenn die Werte x und y gleich sind |
x != y
x is y
x is not y
x in y
x not in y
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.
- Konstanten, die als falsch definiert sind:
None
,false
- Null in numerischer Form:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Leere Sequenz oder Sammlung:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
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 y | wahr, wenn sowohl x als auch y wahr sind |
x or y | wahr, wenn entweder x oder y wahr ist |
not x | falsch, 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.