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.

Viimati uuendatud 27.10.2024.

Ü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

















☻   ☻   ☻