Python Vadovėlis/Pasirinkimai

Iš wiki.angis.net.
Jump to navigation Jump to search
 ← Suskaičiuoti iki 10 Turinys Derinimas → 

If sakinys

Aš manau, kad kiekvieną skyrių turėčiau pradėti nuo apšilimo pratimo. Taigi, žemiau turime trumpą programą, kuri apskaičiuoja absoliučią sveikojo skaičiaus reikšmę:

n = int(input("Skaičius? "))
if n < 0:
   print("Absoliuti", n, "reikšmė yra", -n)
else:
   print("Absoliuti", n, "reikšmė yra", n)

Štai rezultatas po dviejų programos vykdymų:

Skaičius? -34
Absoliuti -34 reikšmė yra 34
Skaičius? 1
Absoliuti 1 reikšmė yra 1

Taigi, ką kompiuteris daro, kai pamato šį kodą? Visų pirma, jis kviečia įvesti skaičių su šiuo sakiniu n = int(input("Skaičius? ")). Tada jis skaito eilutę if n < 0:. Jei n yra mažiau už nulį, Python'as vykdo eilutę print("Absoliuti", n, "reikšmė yra", -n). Kitu atveju, jis vykdo eilutę print("Absoliuti", n, "reikšmė yra", n).

Kalbant formaliau, Python'as tikrina, ar „reiškinio“ n < 0 reikšmė yra teisinga (angl. true) ar klaidinga (angl. false). Sakinys if yra lydimas įtraukto sakinių „bloko“, kuris vykdomas tik jei reiškinio reikšmė yra teisinga. Pasirinktinai, po if sakinio gali būti else sakinys ir dar vienas įtrauktas sakinių „blokas“. Antrasis sakinių blokas yra vykdomas tik jei reiškinio reikšmė yra klaidinga.

Reiškinys gali turėti įvairių sąlygų. Žemiau yra visų jų lentelė:


Operatorius Funkcija
< mažiau nei
<= mažiau nei arba lygu
> daugiau nei
>= daugiau nei arba lygu
== lygu
!= nelygu

Dar viena sakinio if ypatybė yra elif dalis. Tai else if sutrumpinimas ir reiškia, kad jei originali if sakinio reikšmė yra klaidinga, bet elif dalis yra teisinga, yra vykdoma elif kodo dalis. Ir jei nei if, nei elif reiškiniai nėra tiesa, tada vykdomas else blokas. Pavyzdžiui:

a = 0
while a < 10:
    a = a + 1
    if a > 5:
        print(a, ">", 5)
    elif a <= 3:
        print(a, "<=", 3)
    else:
        print("Nei vienas iš testų nėra teisingas")

ir išvestis:

1 <= 3
2 <= 3
3 <= 3
Nei vienas iš testų nėra teisingas
Nei vienas iš testų nėra teisingas
6 > 5
7 > 5
8 > 5
9 > 5
10 > 5

Gali pastebėti, kad elif a <= 3 dalis yra tikrinama tik tada, jei if reiškinio reikšmė nėra tiesa. Galima rašyti daugiau nei vieną elif reiškinį, tokiu būdu leidžiant tikrinti kelias sąlygas viename if sakinyje.

Pavyzdžiai

# Ši programa parodo, kaip galima naudoti == operatorių
# naudojant skaičius
print(5 == 6)
# naudojant kintamuosius
x = 5
y = 8
print(x == y)

Ir išvestis - dvi klaidingos (angl. false) reikšmės

False
False

daugiau_maziau.py

# Spėlionių žaidimas daugiau mažiau

# Iš tiesų, čia turėtų būti naudojami pusiau atsitiktiniai skaičiai,
# pavyzdžiui paskutinis laiko skaitmuo, ar kažkas panašaus. Bet tai
# palauks iki vėlesnės dalies. (Papildoma užduotis: po Modulių dalies, pakeisk šį kodą,
# kad būtų naudojami atsitiktiniai skaičiai)
skaicius = 7
spejimas = -1

print("Atspėk skaičių!")
while spejimas != skaicius:
    spejimas = int(input("Ar tai yra... "))

    if spejimas == skaicius:
        print("Valio! Atspėjai teisingai!")
    elif spejimas < skaicius:
        print("Skaičius yra didesnis...")
    elif spejimas > skaicius:
        print("Skaičius yra ne toks didelis.")

Pavyzdinis vykdymas:

Atspėk skaičių!
Ar tai yra... 2
Skaičius yra didesnis...
Ar tai yra... 5
Skaičius yra didesnis...
Ar tai yra... 10
Skaičius yra ne toks didelis.
Ar tai yra... 7
Valio! Atspėjai teisingai!

lyginis.py

# Prašo įvesti skaičių.
# Išveda, ar skaičius yra lyginis, ar ne
 
skaicius = float(input("Pasakyk man skaičių: "))
if skaicius % 2 == 0:
    print(int(skaicius), "yra lyginis.")
elif skaicius % 2 == 1:
    print(int(skaicius), "yra nelyginis.")
else:
    print(skaicius, "yra labai keistas.")

Pavyzdiniai vykdymai:

Pasakyk man skaičių: 3
3 yra nelyginis.
Pasakyk man skaičių: 2
2 yra lyginis.
Pasakyk man skaičių: 3.4895
3.4895 yra labai keistas.

vidurkis1.py

# Prašo įvesti skaičių iki tol, kol įvedamas 0
# Išveda visų įvestų skaičių vidurkį

kiekis = 0
suma = 0.0
skaicius = 1 # nurodomas tam, kad nebūtų iškart išeinama iš ciklo.

print("Įvesk 0, kad sustabdytum ciklą")

while skaicius != 0:
    skaicius = float(input("Įvesk skaičių: "))
    if skaicius != 0:
        kiekis = kiekis + 1
        suma = suma + skaicius 
    if skaicius == 0:
        print("Skaičių vidurkis yra:", suma / kiekis)

Pavyzdiniai vykdymai:

Įvesk 0, kad sustabdytum ciklą
Įvesk skaičių: 3
Įvesk skaičių: 5
Įvesk skaičių: 0
Skaičių vidurkis yra: 4.0
Įvesk 0, kad sustabdytum ciklą
Įvesk skaičių: 1
Įvesk skaičių: 4
Įvesk skaičių: 3
Įvesk skaičių: 0
Skaičių vidurkis yra: 2.66666666667

vidurkis2.py

# Prašo įvesti skaičių iki tol, kol bus įvestas tam tikras kiekis skaičių
# Išveda visų įvestų skaičių vidurkį.

# Gali pastebėti, kad naudojame sveikąjį skaičių sekti, kiek skaičių
# buvo įvesta, bet slankiojo kablelio skaičių, kiekvienam įvestam
# skaičiui įsiminti
suma = 0.0

print("Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį")
kiekis = int(input("Kelių skaičių vidurkį norėtum suskaičiuoti: "))
esamasis_kiekis = 0

while esamasis_kiekis < kiekis:
    esamasis_kiekis = esamasis_kiekis + 1
    print("Skaičius", esamasis_kiekis)
    skaicius = float(input("Įvesk skaičių: "))
    suma = suma + skaicius 
    
print("Skaičių vidurkis yra:", suma / kiekis)

Pavyzdiniai vykdymai:

Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį
Kelių skaičių vidurkį norėtum suskaičiuoti: 2
Skaičius 1
Įvesk skaičių: 3
Skaičius 2
Įvesk skaičių: 5
Skaičių vidurkis yra: 4.0
Ši programa paprašys įvesti kelis skaičius ir suskaičiuos jų vidurkį
Kelių skaičių vidurkį norėtum suskaičiuoti: 3
Skaičius 1
Įvesk skaičių: 1
Skaičius 2
Įvesk skaičių: 4
Skaičius 3
Įvesk skaičių: 3
Skaičių vidurkis yra: 2.66666666667

Pratimai

Parašyk programą, kuri prašo naudotojo įvesti savo vardą. Jei jis įveda tavo vardą, išvesk „Tai puikus vardas“. Jei jie įveda „Jonas Jonaitis“ arba „Petras Petraitis“, išvesk kokį nors juokingą tekstą. Kitu atveju, išvesk „Tavo vardas yra labai gražus“.

Sprendimas  
vardas = input("Tavo vardas: ")
if vardas == 'Lukas':
    print("Tai puikus vardas.")
elif vardas == 'Jonas Jonaitis':
    print("... juokingas tekstas apie Joną.")
elif vardas == 'Petras Petraitis':
    print("... juokingas tekstas apie Petrą.")
else:
    print("Tavo vardas yra labai gražus.")

Pakeisk aukščiau esančią „daugiau_maziau.py“ programą, kad ji papildomai skaičiuotų, kiek kartų naudotojas įvedė neteisingą skaičių. Jei taip nutiko daugiau, nei tris kartus, programos pabaigoje išvesk „Tai buvo sudėtinga.“, o kitu atveju - „Gerai padirbėjai!“

Sprendimas  
skaicius = 7
spejimas = -1
kiekis = 0

print("Atspėk skaičių!")
while spejimas != skaicius:
    spejimas = int(input("Ar tai yra... "))
    kiekis = kiekis + 1
    if spejimas == skaicius:
        print("Valio! Atspėjai teisingai!")
    elif spejimas < skaicius:
        print("Skaičius yra didesnis...")
    elif spejimas > skaicius:
        print("Skaičius yra ne toks didelis.")

if kiekis > 3:
    print("Tai buvo sudėtinga.")
else:
    print("Gerai padirbėjai!")

Parašyk programą, kuri prašo įvesti du skaičius. Jei skaičių suma yra didesnė nei 100, išvesk „Tai yra didelis skaičius“.

Sprendimas  
skaicius1 = float(input("Pirmas skaičius: "))
skaicius2 = float(input("Antras skaičius: "))
if skaicius1 + skaicius2 > 100:
    print("Skaičių suma yra didelis skaičius.")
 ← Suskaičiuoti iki 10 Turinys Derinimas →