ebSkola

3.2 Loģiskie operatori

Stundas uzdevums: Pielietot Logical operators (Loģiskos operatorus), lai optimizētu kodu un aizstātu sarežģītus, Nested if (Ligzdotos) nosacījumus ar vienkāršākām un lasāmākām izteiksmēm.

2.4.13. Lieto mainīgos, datu tipus un pamatkonstrukcijas. 2.4.14. Izmanto algoritmu vadības struktūras (sazarojumi, cikli).

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - izmēģini and, or un not · 2. uzdevums (~25 min) - uzraksti lietussarga padomdevēju · 3. uzdevums (~20 min) - saīsini ligzdotus if ar loģiskajiem operatoriem. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver VS Code un izveido failu logika.py. Noderēs 3.1 stundā apgūtie salīdzināšanas operatori.

Teorija: Loģisko izteiksmju apvienošana

Logical operators (Loģiskie operatori) ļauj datoram izvērtēt vairākus nosacījumus vienlaicīgi. Tas palīdz izvairīties no gara un nepārskatāma koda.

1. Operators "and" (UN)

Atgriež True (Patiess) tikai tad, ja pilnīgi visi nosacījumi ir patiesi.

# Izpildīsies tikai tad, ja spēlētājam ir pietiekams līmenis UN pietiekami daudz punktu
if limenis >= 10 and punkti >= 50:
    print("Bonusa uzdevums atbloķēts!")

2. Operators "or" (VAI)

Atgriež True, ja vismaz viens no nosacījumiem ir patiess.

# Izpildīsies, ja ievadīts viens vai otrs atslēgvārds
if ievade == "stop" or ievade == "beigt":
    print("Spēle pārtraukta.")

3. Operators "not" (NE)

Apgriež Boolean (Patiesumvērtības) stāvokli pretējā. True kļūst par False un otrādi.

# Izpildīsies, ja spēle NAV beigusies (speles_beigas ir False)
speles_beigas = False
if not speles_beigas:
    print("Spēle turpinās...")

Praktiskie uzdevumi

1. uzdevums -

Izmēģini and, or un not

Beigās tu zināsi, ar ko and atšķiras no or.

  1. Ieraksti print(True and False) un palaid.
  2. Ieraksti print(True or False) un palaid.
  3. Ieraksti print(not True) un palaid.
  4. Pieraksti visus trīs rezultātus README.md failā.
  5. Ieraksti print(5 > 3 and 2 > 10) un paskaidro sev rezultātu.
  6. Ieraksti print(5 > 3 or 2 > 10) un salīdzini.

Gatavs, kad: tu vari pateikt: and prasa visus patiesus, or - vismaz vienu.

2. uzdevums -

Uzraksti lietussarga padomdevēju

Beigās programma pateiks, vai tu samirksi.

  1. Ieraksti lietus = True un ir_lietussargs = False.
  2. Ieraksti if lietus and not ir_lietussargs: un zem tā brīdinājumu.
  3. Pievieno elif lietus and ir_lietussargs: un zem tā mierinošu ziņu.
  4. Pievieno else: un zem tā ziņu par saulainu laiku.
  5. Palaid un pieraksti izvadi.
  6. Nomaini ir_lietussargs uz True un palaid vēlreiz.
  7. Nomaini lietus uz False un palaid trešo reizi.

Gatavs, kad: visi trīs mainīgo salikumi dod trīs dažādas izvades.

3. uzdevums -

Saīsini ligzdotus if ar loģiskajiem operatoriem

Beigās tavs kods būs īsāks, bet darīs tieši to pašu.

  1. Ieraksti jaunā failā ligzdotu variantu: if limenis >= 10: un zem tā ar atkāpi if punkti >= 50:.
  2. Ieliec vēl dziļāk izdruku Bonuss atbloķēts!.
  3. Uzstādi limenis = 12 un punkti = 60 un palaid.
  4. Pārraksti abus if vienā rindā ar and.
  5. Palaid vēlreiz un pārliecinies, ka izvade nav mainījusies.
  6. Saskaiti, par cik rindām kods kļuva īsāks.
  7. Pieraksti vienu secinājumu: kad ligzdots if ir sliktāks par and.

Gatavs, kad: abi varianti dod vienu un to pašu izvadi, bet otrs ir īsāks vismaz par divām rindām.

Papildu uzdevums - Uzraksti paroles pārbaudi

Ja pamatdarbs ir gatavs, izmanto or vairākiem atļautiem vārdiem.

  1. Ieraksti ievade = input("Komanda: ").lower().
  2. Uzraksti nosacījumu if ievade == "stop" or ievade == "beigt":.
  3. Izdrukā zem tā ziņu par programmas beigām.
  4. Palaid ar vārdu stop, tad ar beigt, tad ar BEIGT.
  5. Pieraksti, kāpēc arī BEIGT nostrādāja.

Gatavs, kad: visi trīs varianti nostrādā, un tu vari izskaidrot, ko dara .lower().

Biežākās kļūdas (un kā tās labot):

  • Nepilnīgs OR nosacījums: Pārbaudot vienu mainīgo pret vairākām vērtībām, mainīgais ir jāraksta katru reizi atkārtoti. Dators tekstu "b" uztver kā automātiski patiesu.
    # Slikti (Vienmēr būs True):
    if x == "a" or "b":
    
    # Labi:
    if x == "a" or x == "b":
  • Prioritātes un iekavu trūkums: Kad apvieno and un or, lieto iekavas, lai būtu skaidrs, kurš nosacījums tiek pārbaudīts pirmais (tāpat kā matemātikā).
    # Slikti:
    if a == 1 and b == 2 or c == 3:
    
    # Labi:
    if (a == 1 and b == 2) or c == 3:
  • Pārāk sarežģīts "not": Lai gan not ir noderīgs, bieži to var aizstāt ar vienkāršāku salīdzināšanas operatoru, lai uzlabotu koda lasāmību.
    # Slikti:
    if not (vecums < 18):
    
    # Labi:
    if vecums >= 18:

Koda piemērs: Loģikas apvienošana

# Lietotāja ievade un definēti mainīgie
lietus = True
ir_lietussargs = False

# Loģisko operatoru izmantošana zarošanās procesā
if lietus and not ir_lietussargs:
    print("Tu samirksi! Paņem lietussargu.")
elif lietus and ir_lietussargs:
    print("Lietus līst, bet Tev ir lietussargs. Viss labi!")
else:
    print("Laiks ir saulains vai nav pamata uztraukumam.")
Tu samirksi! Paņem lietussargu.