Sådan skriver du betingede grene med if-udsagn i Python

Forretning

Forklar betinget forgrening med if-udsagn i Python.

  • Grundlæggende principper for if-udsagn (if, elif, else)
  • Angiv betingelser med sammenligningsoperatorer osv.
  • Angiv betingelser ved hjælp af nummer, liste osv.
  • Angiv flere betingelser eller negationer med logiske operatorer (og, eller, eller, ikke)
  • Betingede udtryk på nye linjer og flere linjer

Der findes også en ternær operator, som beskriver en betinget forgrening i én linje. Se følgende artikel.

Grundlæggende principper for if-udsagn (if, elif, else)

Den grundlæggende form af if-erklæringen er som følger

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.`

“elif” svarer til “else if” i C og andre sprog, og der kan være et vilkårligt antal “elifs”.

Hvis der kun er ét betinget udtryk, eller hvis det ikke er nødvendigt at behandle, når det er falsk, kan “elif”- og “else”-blokkene udelades.

Angiv betingelser med sammenligningsoperatorer osv.

Angiv betingelsen med en operation, der returnerer en bool-type (sand, falsk), f.eks. en sammenligningsoperator.

Python-sammenligningsoperatorer er som følger

operatørresultat
x < ysandt, hvis x er mindre end y
x <= ysandt, hvis x er mindre end eller lig med y
x > ysandt, hvis x er større end y
x >= ysandt, hvis x er større end eller lig med y
x == ysandt, hvis x- og y-værdierne er ens
x != ysandt, hvis x- og y-værdierne ikke er ensx is ysandt, hvis x og y er det samme objektx is not ysandt, hvis x og y ikke er det samme objektx in ysandt, hvis x er indeholdt i yx not in ysandt, hvis x ikke er indeholdt i y

Eksempel. For nemheds skyld er den defineret som en funktion med def-angivelsen.

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

Følgende kan skrives på en måde, der er unik for Python. Se følgende artikel for nærmere oplysninger.
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
  • ==
  • !=

Ovenstående er en sammenligning af værdier; for at sammenligne objektidentiteter skal du bruge følgende

  • is
  • is not

Når du f.eks. sammenligner et heltal og et flydende tal, returnerer “==” sandt, hvis værdierne er ækvivalente, men “is” returnerer falsk, fordi de er forskellige objekter.

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

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

print(i == f)
# True

print(i is f)
# False

Det er også muligt at angive, om en liste eller en streng indeholder et bestemt element (tegn).

  • in:omfatter
  • not in:uden at medtage
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

Angiv betingelser ved hjælp af nummer, liste osv.

Det betingede udtryk i en if-anvisning kan være et tal, en liste eller et andet objekt, der ikke er af typen bool (sandt, falsk).

if 10:
    print('True')
# True

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

I det betingede udtryk i en Python if-erklæring anses følgende objekter for at være falske.

Tal, der repræsenterer nul, tomme strenge, lister osv. betragtes som falske; alle andre betragtes som sande.

Hvordan objektet er vurderet kan kontrolleres med bool().

print(bool(10))
# True

print(bool(0.0))
# False

print(bool([]))
# False

print(bool('False'))
# True

Dette kan f.eks. bruges til blot at skrive processen, når listen er tom.

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

Bemærk, at strengen “False” også vil være sand, fordi som vist i eksemplet ovenfor vil enhver streng, der ikke er tom i strengen, være sand. Hvis du vil konvertere en specifik streng som 'True' eller 'False' til 1,0, skal du bruge strtobool() i modulet distutils.util.

Angiv flere betingelser eller negationer med logiske operatorer (og, eller, eller, ikke)

De logiske operatorer (and, or, not) kan bruges til at håndtere logisk konjunktion, logisk disjunktion og negation af flere betingelser.

operatør(Result (i det betingede udtryk i en if-erklæring)
x and ysandt, hvis både x og y er sande
x or ysandt, hvis enten x eller y er sandt
not xfalsk, hvis x er sandt, sandt, hvis x er falsk
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

Faktisk returnerer “x og y” og “x eller y” ikke sandt eller falsk, men enten x eller y. Så længe de bruges i betingede udtryk i if-udsagn, er der ingen grund til at bekymre sig om dem, da de evalueres til enten sandt eller falsk. Se følgende artikel for nærmere oplysninger.

Det er muligt at bruge og og og eller mere end én gang.

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

Betingede udtryk på nye linjer og flere linjer

Når der anvendes flere betingede udtryk ved at forbinde dem med “og” eller “eller”, og hver linje bliver lang, er det nogle gange nødvendigt at bryde det betingede udtryk og skrive det på flere linjer.

Et linjeskift kan foretages ved at bruge en skråstreg eller ved at omslutte hele linjen i parenteser.

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

Du kan bruge en skråstreg til at bryde en linje så mange gange du vil. På samme måde kan du bryde en linje et vilkårligt antal gange inden for parenteser. Der er ingen grænse for indrykning.

Bemærk, at dette er en teknik, der kan bruges overalt i Python-kode, ikke kun i if-meddelelser.

Copied title and URL