Praktikum 9¶
Allolevad ülesanded on kusrsuse "Sissejuhatus programmeerimisse Pythoni baasil" YFX0500 praktikumis koos kursusega ja kodus iseseisvalt lahendamiseks. Kuidas lahendada allolevaid ülesandeid? Uuri ja kasuta loengus kommenteeritud süntaksi näiteid, abiinfot (Pythoni sisseehitatud funktsioon help
, jne.), Internetti ja enda aju. Küsimuste korral, mis tekivad praktikumi ajal, pöördu õppejõu või õppejõudude poole. Iganädalaselt peale praktikumi toimumist avaldatakse ülesannete lahendused kursuse kodulehel.
Ülesanne 1:
Silu kood. Mis on valesti? Mitu erisust või viga on võimalik leida. Mis erisus või erisused tõstatuvad?
vanus = {'juulius'=24, 'juulia'=26}
print(vanus['juulius'])
Vastus: Viga: SyntaxError
.
Ülesanne 2:
Silu kood. Mis on valesti? Mitu erisust või viga on võimalik leida. Mis erisus või erisused tõstatuvad?
vanus = {'Juulius': 24,
'Juuli': 24
'Juulia': 43
}
print(f'Juulia on {vanus["juulia"]} aastat vana. Preili käest vanust ei küsita!')
Vastus: Erisused SyntaxError
ja KeyError
, vigased koodiread leia ise.
Ülesanne 3:
Silu kood. Mis on valesti? Mitu erisust või viga on võimalik leida. Mis erisus või erisused tõstatuvad?
def solve_quadratic(a, b, c):
# Calculate the discriminant
D = b**2 - 4*a*c
# Initialize the solutions
if D > 0:
# Two real solutions
x1 = (-b + D**0.5) / (2 * a)
x2 = (-b - D**0.5) / (2 * a)
elif D == 0:
# One real solution
x1 = x2 = -b / (2 * a)
else:
# Complex solutions
real_part = -b / (2 * a)
imaginary_part = (-D**0.5) / (2 * a)
x1 = (real_part, imaginary_part)
x2 = (real_part, -imaginary_part)
return x1, x2
# Example usage
a, b, c = -1, 2, 3
solutions = solve_quadratic(a, b, c)
print(f"The solutions are: x1 = {solutions[0]}, x2 = {solutions[1]}")
Vastus: Viga IndentationError
, vigase või vigased koodiread leia ise.
Ülesanne 4:
Lae kursuse kodulehelt alla moodul L9_Ul4.py. Ava moodul integreeritud arenduskeskkonna tarkvaras. Silu kood. Mis on valesti? Mitu erisust või viga on võimalik leida. Mis erisus või erisused tõstatuvad?
Vastus: Viga TabError
, vigase või vigased koodiread leia ise.
Ülesanne 5:
Silu kood. Mis on valesti? Mitu erisust või viga on võimalik leida. Mis erisus või erisused tõstatuvad?
def fun(a, b):
print(a, b)
fun(a=1, 2)
Vastus: Erisus või viga SyntaxError
.
Ülesanne 6:
Leia kõik süntaksi vead ilma lähtekoodi interpreteerimiseta.
for i in range(4):
print i
Ülesanne 7:
Leia kõik süntaksi vead ilma lähtekoodi interpreteerimiseta.
def mySum(a,b):
c=a+b
return c
print(mySum([2,3.75]))
Ülesanne 8:
Leia kõik süntaksi vead ilma lähtekoodi interpreteerimiseta.
x = 2.2
if x<0
print('negative')
elif x>0
print('positive')
else
print('zero')
Ülesanne 9:
Leia kõik süntaksi vead ilma lähtekoodi interpreteerimiseta.
y = 1.0/x if x != 0: else: 0
print (x)
print (y)
Ülesanne 10:
Leia kõik süntaksi vead ilma lähtekoodi interpreteerimiseta.
x = 2.2
y = -6.6
negative = -1
if x > 0 and y > 0:
print(not negative)
elif x < 0 and y < 0:
print('both negative')
elif x == 0 or y == 0:
print('one is zero')
elif x == 0 and y == 0:
print('both are zero')
else:
print('one is positive, one is negative')
Vihje: Loogikaviga.
Ülesanne 11:
Silu funktsiooni perenimi
.
andmed = {"nimi": "Juulius Tipikas", "amet": "maskott"}
def perenimi():
return andmed["perenimi"]
perenimi()
print("Maskoti perekonnanimi on {}".format( perenimi() ))
Ülesanne 12:
Ajarändur ilmub järsku meie klassiruumi. Allolev programm teretab ajarändurit olenevalt tema päritolu aastast. Leia vead.
aasta == int.input("Tervist! Mis aastast sa tuled? '))
if aasta <= 1900
print('Wow'd, tere nimevik!')
elif year > 1900 && year < 2020:
print("Tere oleviku inimene!")
elif:
print ("Tere tuleviku inimene, kas sa räägid Hiina keelt?")
Ülesanne 13:
Paranda süntaksi vead.
greeting = input("Hello, possible pirate! What's the password?)
if greeting in ["Arrr!"):
print("Go away, pirate.")
elif
print("Greetings, hater of pirates!")
Ülesanne 14:
Halda erisusi. Kasuta konstruktsiooni try/except
.
a = 'Hello World!'
a + 10
Ülesanne 15:
Halda erisusi. Kasuta konstruktsiooni try/except
.
lst = [5, 10, 20]
print(lst[5])
Ülesanne 16:
Tutvu loengus esitatud funktsiooni jaga
üldistatud kujuga (esitatud lõigus 24). Veendu, et kõik erisused on hallatud, s.t., et Pythoni interpretaator ei tõstata erisusi.
import math
def jaga(a, b):
try:
return a / b
except TypeError:
try:
a, b = float(a), float(b) # Proovin numbriks teisendada.
return jaga(a, b)
except ValueError as e:
print('Ei teisene numbriks:', e)
return None
except TypeError as e2:
print('Sellised sisendid pole lubatud:', e2)
return None
except ZeroDivisionError:
print('Teade: Läheneb sellele suurusele või võimatu.')
return a * math.inf # Argumenti a kasutame märgi jaoks.
Ülesanne 17:
Miks tõstatub erisus ZeroDivisionError
?
import math
def jaga(a, b):
try:
return a / b
except TypeError:
try:
a, b = float(a), float(b) # Proovin numbriks teisendada.
return jaga(a, b)
except ValueError as e:
print('Ei teisene numbriks:', e)
return None
except TypeError as e2:
print('Sellised sisendid pole lubatud:', e2)
return None
except ZeroDivisionError:
print('Teade: Läheneb sellele suurusele või võimatu.')
return a * math.inf # Argument a on märgi jaoks. Läheneb sellele suurusele.
print(jaga(1 / 0))
Koos kursusega¶
Ülesanne 18:
Õppejõu juhendamisel: Silu kood kasutades Spyder IDE silurit (graafiline kasutajaliides).
k = {0:'kaua', 1:'kauem', 2:'igavesti'}
def elagu(num):
i = 0
while i < num:
text = k[i]
print('Ta elagu {}!'.format(text))
i += 1
diplomeid = 'viis'
kaitsmisi = 'viis'
nimi = 'Juulius Tipikas'
print('Käib koolis {}.'.format(nimi))
print('Juba aastaid käib ta koolis.')
print('Diplomeid on kirjutanud {}.'.format(diplomeid))
print('Edukalt kaitsnud on ta {}!'.format(kaitsmisi))
elagu(3)
Oodatav tulemus:
Käib koolis Juulius Tipikas.
Juba aastaid käib ta koolis.
Diplomeid on kirjutanud viis.
Edukalt kaitsnud on ta null!
Ta elagu kaua!
Ta elagu kauem!
Ta elagu igavesti!
Ülesanne 19:
Ava moodul L9_Ul19.py. Silu failist leitud lähtekood. Kui selleks on vajadus siis kasuta Pythoni silurit. Tutvu ülesandega kaasaskäiva artikliga. Veavaba kood peab taastootma artikkli Joonisel 2 kujutatud kõverate graafikud.
Artikkel veebis: http://www.sciencedirect.com/science/article/pii/S0196890413000277
Artikkel (kohalik koopia, lühendatud): artikkel.pdf