Python Academy · leksjon

Vilkår og jokertegn

Legg til betingelser og standardtilfeller

Leksjon 4 av 413 trinn

Vilkår og jokertegn er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Finjustere treff

Noen ganger er ikke et strukturelt mønster nok; det trengs også en betingelse. Vaktbetingelser legger til en if-test i et tilfelle, og jokertegn gir fleksible mønstre som fanger opp alt.

Legge til en vaktbetingelse

Skriv if <condition> etter et mønster. Tilfellet samsvarer bare når mønsteret passer og vaktbetingelsen er sann.

n = 7

match n:
    case x if x < 0:
        print('negative')
    case x if x == 0:
        print('zero')
    case x if x > 0:
        print('positive')

Vaktbetingelser bruker fangede navn

En vaktbetingelse kan referere til variabler som er bundet av mønsteret. Her kontrolleres det fangede paret for likhet.

point = [3, 3]

match point:
    case [x, y] if x == y:
        print('on the diagonal')
    case [x, y]:
        print('off the diagonal')

Hvis vaktbetingelsen mislykkes

Hvis strukturen samsvarer, men vaktbetingelsen er usann, fortsetter mønstermatchingen til neste tilfelle i stedet for å stoppe.

value = 5

match value:
    case n if n > 100:
        print('big')
    case n:
        print('fell through to here:', n)

Vaktbetingelser med klassemønstre

Vaktbetingelser kan kombineres med alle mønstertyper, også klassemønstre, for presise betingelser basert på objektattributter.

from dataclasses import dataclass

@dataclass
class Order:
    total: float

def discount(order):
    match order:
        case Order(total=t) if t > 100:
            return 'free shipping'
        case Order():
            return 'standard shipping'

print(discount(Order(150)))
print(discount(Order(50)))

Oppsummering av jokertegnet

Den frittstående understreken _ samsvarer med hva som helst og binder ingenting. Som siste tilfelle håndterer den alt som ikke ble fanget opp tidligere.

x = 'unexpected'

match x:
    case 'a':
        print('letter a')
    case _:
        print('catch-all')

Fangst eller jokertegn

En navngitt fangst samsvarer også med hva som helst, men beholder verdien, mens _ forkaster den. Bruk et navn når De trenger verdien i kroppen.

value = 42

match value:
    case 0:
        print('zero')
    case other:        # capture: keeps the value
        print('value was', other)

Jokertegn inne i mønstre

Understreken kan brukes inne i større mønstre for å ignorere deler De ikke trenger.

record = ('user', 42, 'ignore_me')

match record:
    case ('user', user_id, _):
        print('user id:', user_id)

Kombinere OR, vaktbetingelser og jokertegn

Disse funksjonene kan settes sammen. Et OR-mønster, deretter en vaktbetingelse og til slutt et jokertegn gir en uttrykksfull klassifikator.

def classify(n):
    match n:
        case 0 | 1:
            return 'binary digit'
        case x if x % 2 == 0:
            return 'even'
        case _:
            return 'odd'

print(classify(0))
print(classify(4))
print(classify(7))

Uttømmende mønstermatching

I motsetning til enkelte språk krever ikke Python at en match er uttømmende. Hvis ingen tilfeller samsvarer, gjør setningen ganske enkelt ingenting. Legg til et avsluttende case _ når De vil garantere at en gren alltid kjøres.

color = 'purple'
result = 'no match'

match color:
    case 'red':
        result = 'stop'
    case 'green':
        result = 'go'

print(result)

Vaktbetingelser på destrukturerte data

Vaktbetingelser passer naturlig sammen med sekvens- og mappingmønstre, slik at De kan teste verdiene som nettopp ble hentet ut.

data = [10, 20]

match data:
    case [a, b] if a + b > 25:
        print('sum is large')
    case [a, b]:
        print('sum is small')

Kort kontroll

Hva skjer når et mønster samsvarer strukturelt, men vaktbetingelsen er usann?

Oppsummering

De har lært å legge til betingelser og tilfeller som fanger opp alt.

  • Vaktbetingelser legger til en if-test som kan bruke fangede navn.
  • Hvis en vaktbetingelse mislykkes, fortsetter matchingen til neste tilfelle.
  • _ samsvarer og forkaster verdien, mens et navn fanger den.
  • Legg til et avsluttende case _ for en garantert gren.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Vilkår og jokertegn» gratis?

Ja – hele teksten i «Vilkår og jokertegn» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Vilkår og jokertegn»?

Legg til betingelser og standardtilfeller Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Vilkår og jokertegn»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Grunnleggende om match og case
  2. Samsvar med sekvenser og mappinger
  3. Klassemønstre
  4. Vilkår og jokertegn
← Tilbake til Python Academy