Python Vadovėlis/Pasirinkimai
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.")
|