Ohjelmoinnin perusteet – vaikeat tehtävät
Python perusfunktioita
Tehtävä 1. Pyydä käyttäjältä 2 lukua, jotka ovat suurempia kuin 0. Tallenna ne muuttujiin r on pohjan säde ja s on kartion korkeus. Laske kartion pinta-ala ja tulosta vastaus. Keksi testi arvot itse.

Koodi:
import math
s = float(input("Anna positiivinen luku: "))
r = float(input("Anna positiivinen luku: "))
Ap = math.pi*r**2
Av = math.pi*r*s
A = Ap+Av
print("Kartion pinta-ala on", A)

Tuloste:
Kartion pinta-ala on 119.38052083641213
Huom! Kyseinen tuloste saadaan, kun arvoiksi on annettu 5.5 ja 4
Peruskomentoja
Tehtävä 2. Laske ympyrän pinta-ala ohjelmallisesti, kun halkaisija on 7.

Koodi:
import math
halkaisija = 7
sade = halkaisija/2
ympyran_pa = math.pi * sade
print("Ympyrän pinta-ala on", ympyran_pa)
Tuloste:
Ympyrän pinta-ala on 10.995574287564276
Tehtävä 3. Laadi ohjelma joka laskee paraabelin nollakohdat, kun paraabelin lauseke on .

Koodi:
import math
a=5
b=3
c=-2
print((-b+math.sqrt(b**2-4*a*c))/(2*a))
print((-b-math.sqrt(b**2-4*a*c))/(2*a))
Tuloste:
0.4
-1.0
Muuttujat ja tyypit
Tehtävä 4. Ratkaise toisen asteen yhtälön nollakohdat, kun a=”3.4”, b=4 ja c=True. Muuttujia ei saa muokata, anna vastaus liukulukuna.

Koodi:
import math
a = "3.4"
b = 4
c = True
nollakohta1 = (-float(b)+math.sqrt(float(b)**2-4*float(a)*float(c)))/(2*float(a))
nollakohta2 = (-float(b)-math.sqrt(float(b)**2-4*float(a)*float(c)))/(2*float(a))
print(f"Ensimmäinen nollakohta on {nollakohta1} ja sen tyyppi on {type(nollakohta1)}.")
print(f"Toinen nollakohta on {nollakohta2} ja sen tyyppi on {type(nollakohta2)}.")
Tuloste:
Ensimmäinen nollakohta on -0.36041274434074017 ja sen tyyppi on <class ’float’>.
Toinen nollakohta on -0.8160578438945539 ja sen tyyppi on <class ’float’>.
Moduulit
Tehtävä 5. Toteuta yksinkertainen sekoitettu korttipakka, josta nostetaan 1 kortti 20 kertaa.

Koodi:
#kutsutaan tarvittavat kirjastot
import random
#määritetään korttipakassa olevat maat ja niiden arvot
maat = ["pata", "ässä", "hertta", "ruutu"]
arvot = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
pakka = []
#Yhdistetään maat ja arvot -> luodaan järjestyksessä oleva korttipakka
for arvo in arvot:
for maa in maat:
pakka.append(arvo+maa)
#Sekoitetaan korttipakka
random.shuffle(pakka)
#Nostetaan yksittäinen kortti 20 kertaa sekoitetusta pakasta ja tulostetaan kortti
for i in range(20):
kortti = random.choice(pakka)
print(kortti)
Tuloste:
10hertta
Jpata
3ässä
4hertta
2ruutu
7ruutu
6ässä
9hertta
2ruutu
Qpata
7ässä
6ässä
Khertta
Jhertta
9ässä
10ruutu
10pata
Qhertta
Jhertta
7ässä
HUOMAA! Tuloste on erilainen jokaisella ajolla.
Listat ja indeksit
Tehtävä 6. Kirjoita ohjelma, joka pyytää käyttäjältä 4 lukua. Lisää ne annetussa järjestyksessä listaan. Tämän jälkeen laske listan ensimmäinen ja viimeinen luku yhteen indeksejä käyttäen.
Käytä append-komentoa arvojen lisäämiseksi listaan.
Tapa 1.

Koodi:
lista = []
luku1 = int(input("Anna ensimmäinen luku: "))
luku2 = int(input("Anna toinen luku: "))
luku3 = int(input("Anna kolmas luku: "))
luku4 = int(input("Anna neljäs luku: "))
lista.append(luku1)
lista.append(luku2)
lista.append(luku3)
lista.append(luku4)
print(lista)
print(f"Lukujen {lista[0]} ja {lista[-1]} summa on lista[0]+lista[-1]")
Tuloste:
[4, 5, 6, 7]
Lukujen 4 ja 7 summa on 11
Tapa 2.

Koodi:
lista = []
i = 0
while i <= 3 :
luku = int(input(”Anna luku: ”))
lista.append(luku)
i = i + 1
print(lista)
print(f”Lukujen {lista[0]} ja {lista[-1]} summa on {lista[0]+lista[-1]}”)
Tuloste:
[4, 5, 6, 7]
Lukujen 4 ja 7 summa on 11
