Syventäviä / kertaavia tehtäviä

Tehtävä 1.

a) Luo ohjelma, joka ottaa käyttäjältä syötteenä nimiä ja tallenna ne listaan. Tyhjä syöte katkaisee syötteiden antamisen. Muista kertoa tämä käyttäjälle. Järjestä lista aakkosjärjestykseen ja tulosta se.

Koodi:

nimet = []

while True:
    nimi = input("Syötä nimi (tyhjä lopettaa): ")
    if nimi == "":
        print("Nimilista valmis!")
        break
    nimet.append(nimi)
nimet.sort()
print(nimet)

Tuloste:

Nimilista valmis!
Lista nimistä aakkosjärjestyksessä

b) Järjestä lista nyt nimen pituuden mukaan.

Koodi:

nimet = []

while True:
    nimi = input("Syötä nimi (tyhjä lopettaa): ")
    if nimi == "":
        print("Nimilista valmis!")
        break
    nimet.append(nimi)
nimet.sort(key=len)
print(nimet)

Tuloste:

Nimilista valmis!
Lista nimistä järjestettynä pituuden mukaan lyhyin ensin

c) Lisää jokaisen nimen perään ”nen”.

Koodi:

nimet = []
nimetpitkä = []

while True:
    nimi = input("Syötä nimi (tyhjä lopettaa): ")
    if nimi == "":
        print("Nimilista valmis!")
        break
    nimet.append(nimi)
nimet.sort(key=len)
for nimi in nimet:
    nimi += "nen"
    nimetpitkä.append(nimi)
print(nimetpitkä)

Tuloste:

Nimilista valmis!
Lista nimistä järjestettynä vastaavasti kuin edellisessä kohdassa. Nimien perään on lisätty -nen-pääte

Tehtävä 2.

a) Muodosta lista luvuista, eli ota syötteenä luku ja lisää se listaan. Kun syöte on tyhjä, ohjelman suoritus päättyy. Muista kertoa tämä käyttäjälle.

Koodi:

luvut = []

while True:
    syöte = input("Syötä luku (tyhjä lopettaa): ")

    if syöte == "":
        break

    luku = int(syöte)
    luvut.append(luku)
print(luvut)

Tuloste:

Lista syötetyistä luvuista

b) Lisää virheenhallinta varmistaaksesi, että syötetään vain kokonaislukuja ja ettei ohjelma kuitenkaan kaadu, kun syötetään jotain muuta.

Koodi:

luvut = []

while True:
    syöte = input("Syötä luku (tyhjä lopettaa): ")

    if syöte == "":
        break

    try:
        luku = int(syöte)
        luvut.append(luku)
    except:
        print("Ei ole luku.")
luvut_järjestetty = sorted(luvut)

print(f"Lista syötetyistä luvuista: {luvut_järjestetty}")
print(f"Alkuperäiset syötteet: {luvut}")
Tulosteet:

Ei ole luku.
Lista syötetyistä luvuista: <lista syötetyistä luvuista>

c) Luvut lisätään listaan siinä järjestyksessä kuin ne on syötetty. Järjestä ne pienimmästä suurimpaan. Tulosta järjestetty lista ja sitten alkuperäinen lista.

Tuloste esim.

Koodi:

luvut = []

while True:
    syöte = input("Syötä luku (tyhjä lopettaa): ")

    if syöte == "":
        break

    try:
        luku = int(syöte)
        luvut.append(luku)
    except:
        print("Ei ole luku.")
print(f"Lista syötetyistä luvuista: {luvut}")
Tulosteet:

Ei ole luku.
Lista syötetyistä luvuista: <lista syötetyistä luvuista>
Alkuperäiset syötteet: <alkuperäinen lista>

Tehtävä 3. Luo ohjelma, joka ottaa käyttäjältä syötteen ja yrittää laskea toisen potenssin tälle syötteelle. Lopeta syötteen kysyminen, kun käyttäjä antaa tyhjän syötteen.

Koodi:

import random

vastaukset = ["En ymmärrä.", "Mitä tarkoitat?", "Voitko tarkentaa?", "Tuo ei kyllä tule toimimaan."]

while True:
    syöte = input("Syötä luku (tyhjä lopettaa): ")

    if syöte == "":
        break

    try:
        print(int(syöte)**2)
    except:
        print(random.choice(vastaukset))
Tulosteet:

En ymmärrä.
Mitä tarkoitat?
Voitko tarkentaa?
Tuo ei kyllä tule toimimaan.
Tai: syötetyn luvun neliö

Arvailupelejä

Arvailupeli 1.

Luodaan arvailupeli, jossa käyttäjä syöttää arvoja ja saa sitä mukaa vinkkejä. Voit ottaa käyttäjältä niin monta arvausta kuin haluat ja antaa sellaisia vinkkejä kuin haluat.

Esimerkkiratkaisu

Koodi:

sana = "arvaus"
laskuri = 0

while True:
    arvaus = input("Syötä arvaus: ")
    laskuri += 1
    if arvaus == sana:
        print("Voitto!")
        print("Sana oli", sana)
        break

    if laskuri == 1:
        print("Vinkki: Liittyy veikkaamiseen.")
    elif laskuri == 2:
        print("Vinkki: Kyseessä on substantiivi.")
    elif laskuri == 3:
        print("Vinkki: Hyvin oleellinen sana, kun veikataan jotain.")
    elif laskuri == 4:
        print("Vinkki: Sana on perusmuodossa.")
    elif laskuri == 5:
        print("Peli ohi!")
        print("Sana oli", sana)
        break
Tulostaa:

Vinkkien kohdalla tulostaa ”Vinkki: <vinkki tähän>”
Jos arvaa oikein, tulostaa ”Voitto!” sekä ”Sana oli <sana>”
Jos ei onnistu arvaamaan, tulostaa ”Peli ohi!” sekä ”Sana oli <sana>”

Arvailupeli 2.

Luodaan arvailupeli, jossa käyttäjä syöttää ensin arvausvälin ylärajan kokonaislukuna ja ohjelma valitsee väliltä satunnaisen luvun, joka käyttäjän pitää arvata.

Esimerkkiratkaisu

Koodi:

import random
print("Tervetuloa arvailupeliin!")
katto = int(input("Syötä arvausvälin yläraja: "))
arvattava = random.randint(0,katto)

while True:
    arvaus = int(input("Syötä arvaus: "))
    if arvaus == arvattava:
        print("Voitit pelin!")
        break
    elif arvaus > arvattava:
        print("Luku on pienempi kuin", arvaus)
    elif arvaus < arvattava:
        print("Luku on suurempi kuin", arvaus)
Tulostaa:

Tervetuloa arvailupeliin!
Luku on suurempi tai pienempi kuin arvaus
Kun arvaus osuu oikeaan:
Voitit pelin!