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)
Kuvakaappaus Abicoden Anna syöte laatikosta.

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 f(x)=5x2+3x2f(x)=5x^2+3x-2.

""

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