Ohjelma kysyy lukua. Sallitut arvot ovat kokonaislukuja nolla ja siitä ylöspäin.
Kuinkas tuohon nyt saa rakennettua ehdon jolla arvoa kysytään uudestaan mikäli käyttäjä onkin syöttänyt vaikkapa kirjaimen tai liukuluvun?
Kun input-lauseelle annettu vastaus tallentuu muuttujaan stringinä. Mikäli muuttujan tyyppi määrittyisi annetun vastauksen perusteella olisi helppoa vain vertailla tyyppejä...
Python ja vertailu
3
162
Vastaukset
- Anonyymi
kuten sanoit, input() palauttaa aina merkkijonon, sinun täytyy itse tarkistaa, onko se muunnettavissa kokonaisluvuksi, ja sitten vielä, että se on vähintään nolla.
Voit käyttää esimerkiksi try-except-rakennetta näin:
python
while True:
vastaus = input("Anna kokonaisluku, joka on vähintään nolla: ")
try:
luku = int(vastaus)
if luku >= 0:
break # kelvollinen syöte, poistutaan silmukasta
else:
print("Luku ei voi olla negatiivinen.")
except ValueError:
print("Et antanut kokonaislukua.")
Tässä:
int(vastaus) yrittää muuntaa syötteen kokonaisluvuksi.
Jos syöte on vaikkapa 5.5 tai abc, se aiheuttaa ValueErrorin ja ohjelma pyytää syötettä uudestaan.
Jos syöte on esimerkiksi -3, muunnos onnistuu, mutta ehdossa huomataan ettei se kelpaa.- Anonyymi
Kiitoksia paljon! :)
- Anonyymi
Anonyymi kirjoitti:
Kiitoksia paljon! :)
Kiitä tekoälyä.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Tukalaa kuumuutta
Tietäisitpä vaan kuinka kuumana olen käynyt viime päivät. Eikä johdu helteestä, vaan sinusta. Mitäköhän taikoja olet teh422532Mansikkatiloilla hyväksikäytetään ukrainalaisia
Työolot ovat surkeita ja palkka kelvoton. https://yle.fi/a/74-201729423022172- 241920
- 241635
Ensi kesänä
Näin kesän viimeisenä minuutteina ajattelen sinua. Olisiko seuraava kesä "meidän" kesä? Tänä vuonna ei onnistuttu, mutta471556Okei, myönnetään,
Oisit sä saanut ottaa ne housutkin pois, mutta ehkä joskus jossain toisaalla. 😘251499- 441386
- 1001359
En ymmärrä käytöstäsi
Se on ollut eräänlaista hyväksikäyttöä. Että seura kyllä kelpaa palstan välityksellä silloin kun ei ole parempaakaan tek1391315- 361096