Leg voorwaardelijke vertakking uit met if statements in Python.
- Grondbeginselen van if-statements (if, elif, else)
- Specificeer voorwaarden met vergelijkingsoperatoren, enz.
- Specificeer voorwaarden per nummer, lijst, enz.
- Specificeer meerdere voorwaarden of ontkenningen met logische operatoren (en, of, niet)
- Voorwaardelijke uitdrukkingen op nieuwe regels en op meerdere regels
Er is ook een ternaire operator die een voorwaardelijke vertakking in één regel beschrijft. Zie het volgende artikel.
- GERELATEERD:Als statements in één regel schrijven met Python's ternaire operator (voorwaardelijke operator)
- Grondbeginselen van if-statements (if, elif, else)
- Specificeer voorwaarden met vergelijkingsoperatoren, enz.
- Specificeer voorwaarden per nummer, lijst, enz.
- Specificeer meerdere voorwaarden of ontkenningen met logische operatoren (en, of, niet)
- Voorwaardelijke uitdrukkingen op nieuwe regels en op meerdere regels
Grondbeginselen van if-statements (if, elif, else)
De basisvorm van de if-statement is als volgt
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.`
De “elif” komt overeen met de “else if” in C en andere talen, en er kan een willekeurig aantal “elifs” zijn.
Indien er slechts één voorwaardelijke uitdrukking is of verwerking wanneer false niet nodig is, kunnen de “elif” en “else” blokken weggelaten worden.
Specificeer voorwaarden met vergelijkingsoperatoren, enz.
Specificeer de voorwaarde met een bewerking die een bool type (waar, onwaar) teruggeeft, zoals een vergelijkingsoperator.
Python vergelijkingsoperatoren zijn als volgt
operator | resultaat |
---|---|
x < y | waar als x kleiner is dan y |
x <= y | true als x kleiner is dan of gelijk aan y |
x > y | waar als x groter is dan y |
x >= y | true als x groter is dan of gelijk aan y |
x == y | true als x en y waarden gelijk zijn |
x != y
x is y
x is not y
x in y
x not in y
Voorbeeld. Voor het gemak wordt het gedefinieerd als een functie met de def verklaring.
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
Het volgende kan worden geschreven op een manier die uniek is voor Python. Zie het volgende artikel voor 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
==
!=
Het bovenstaande is een vergelijking van waarden; om objectidentiteiten te vergelijken, gebruik je het volgende
is
is not
Bijvoorbeeld, bij het vergelijken van een geheel getal en een drijvend-kommagetal, “==” is waar als de waarden equivalent zijn, maar “is” is vals omdat het verschillende objecten zijn.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Het is ook mogelijk de voorwaarde te stellen of een lijst of een string een specifiek element (karakter) bevat.
in
:inclusiefnot in
:niet inbegrepen
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
Specificeer voorwaarden per nummer, lijst, enz.
De voorwaardelijke uitdrukking van een if-instructie kan een getal, lijst, of ander object zijn dat niet van het type bool (waar, onwaar) is.
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
In de voorwaardelijke uitdrukking van een Python if statement worden de volgende objecten als onwaar beschouwd.
- Constanten gedefinieerd als onwaar:
None
,false
- Nul in numeriek type:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Lege reeks of verzameling:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Getallen die nul voorstellen, lege reeksen, lijsten, enz. worden als onwaar beschouwd; alle andere worden als waar beschouwd.
Hoe het object wordt beoordeeld kan worden gecontroleerd met bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Dit kan gebruikt worden om het proces te schrijven als de lijst leeg is, bijvoorbeeld.
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
Merk op dat de string 'False' ook true zal zijn, omdat zoals in het voorbeeld hierboven, elke string die niet leeg is in de string true zal zijn. Om een specifieke string zoals 'True' of 'False' om te zetten naar 1,0, gebruik je strtobool() in de distutils.util module.
Specificeer meerdere voorwaarden of ontkenningen met logische operatoren (en, of, niet)
De logische operatoren (en, of, niet) kunnen worden gebruikt om logische conjunctie, logische splitsing en negatie van meervoudige voorwaarden te behandelen.
operator | (Resultaat (in de voorwaardelijke uitdrukking van een if-statement) |
---|---|
x and y | waar als zowel x als y waar zijn |
x or y | waar als x of y waar is |
not x | onwaar als x waar is, waar als x onwaar is |
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
In feite geven “x en y” en “x of y” niet True of False terug, maar ofwel x of y. Zolang ze gebruikt worden in voorwaardelijke uitdrukkingen in if statements, is er geen reden om je er zorgen over te maken, aangezien ze evalueren naar ofwel True of False. Zie het volgende artikel voor details.
- GERELATEERD:Python's logische operatoren “en, of, niet” (logische conjunctie, logische disjunctie, negatie)
Het is mogelijk om en en of meer dan eens te gebruiken.
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
Voorwaardelijke uitdrukkingen op nieuwe regels en op meerdere regels
Wanneer meerdere voorwaardelijke uitdrukkingen worden gebruikt door ze te verbinden met “en” of “of” en elke regel lang wordt, is het soms nodig om de voorwaardelijke uitdrukking af te breken en op meerdere regels te schrijven.
Een regeleinde kan worden gemaakt door een backslash te gebruiken of door de hele regel tussen haakjes te zetten.
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
U kunt een backslash gebruiken om een regel zo vaak te breken als u wilt. Evenzo kunt u een regel binnen haakjes een willekeurig aantal keren afbreken. Er is geen limiet voor inspringing.
Merk op dat dit een techniek is die overal in Python code kan worden gebruikt, niet alleen in if statements.