Hei, minulla on Windows alusta ja käytän python 3.7. Minulla on tällainen yksi tehtävä jota en osaa ratkaista ja tarvitsisin siinä apua. Tehtävänanto on seuraava:
Ask user for a list of integers. If user enters an integer, then append it into the list and ask for the next. If user enters something else and the list is at least 3 items long, then list is completed, stop asking for more. If the user enters not a number, but the list is too short, skip it and continue asking. Print the mean average of the values. Use integer division.
Valmiina sen kuuluisi näyttää toimiesssaan esim tältä:
Enter a number or something else to stop: 10 Enter a number or something else to stop: stop Must be at least 3, type some more Enter a number or something else to stop: -20 Enter a number or something else to stop: 50 Enter a number or something else to stop: 40 Enter a number or something else to stop: finish Mean average = 20
Kiitos paljon jo etukäteen jos joku osaa tuon ratkaista ja auttaa :)
Mikä osa tehtävässä tuottaa ongelmia? Laita tekemäsi koodilistaus esille, niin katsotaan miten asiaa kannattaisi lähestyä. Noin muutoin varsin suoraviivainen ja selkeä tehtävä. Kysyt vain silmukassa lukuja, kunnes listassa on ainakin 3 kokonaislukua. Tämän jälkeen lisäät luvun vain jos annettu syöte on kokonaisluku. Lopulta kun käyttäjä syöttää jotakin muuta kuin kokonaisluvun, niin lasket keskiarvon syötetyistä kokonaisluvuista.
Olen aloittelija koodauksessa, joten kaikissa osissa tehtävää on hieman ongelmia. En oikein tiedä mitä silmukkaa käyttää, kokeilin while-silmukkaa, mutta siihen en sitten osannut muodostaa sitä kohtaa, että listassa on kolme lukua. Tässä näkyy mitä olen yrittänyt.
#Ask user for a list of integers while True: try: n=int(input('Enter a number or something else to stop: ')) except: print('Must be at least 3, type some more')
aurinkoinen1 kirjoitti:
(01.04.2019 14:02:02): Olen aloittelija koodauksessa, joten kaikissa...
Päättymättömässä silmukassa lue syöte. Tarkasta onko syöte pelkkiä numeroita. Jos on, niin muunna luvuksi ja lisää listaan. Jos ei ole pelkkiä numeroita, niin tarkasta onko listan pituus 3 tai suurempi. Jos on niin poistu silmukasta, muuten tulosta viesti. Silmukan jälkeen laske ja tulosta keskiarvo.
Esimerkiksi 8th ohjelmointikielellä ohjelma voisi näyttää vaikka tältä:
needs math/mean [] var, values : get-line \ -- s f:stdin f:getline nip ; : numbers? \ s -- s f dup /[0-9]/ r:match nip ; : app:main repeat "Enter a number or something else to stop: " . get-line numbers? if values @ swap >n a:push drop else drop values @ a:len nip 3 n:< not if break else "Must be at least 3, type some more." . cr then then again values @ a:mean nip "Mean average = " . . cr bye ;
Jalski aloittelijalle voisi olla parempi pitäytyä pyydetyssä kielessä tai pseudokoodilla. Harvinainen 8th-kieli ei välttämättä aukea aloittajalle.
Alla koodirunko tehtävään, jolla sinun pitäisi onnistua.
# Määritellään lista, jonne tallennamme luvut lista = [] listan_koko = 0 while True: #kysy syote try: #muunna luvuksi heittään poikkeuksen jos epäonnistuu #lisää listaan luku #laske listan_koko len-funktio except ValueError: #jos listan koko on alle 3 #Ilmoita virheestä #muuten #määrittele summamuutuja ja anna sille arvoksi nolla #käy lista läpi for-silmukalla #lisää summmaan vuorossa oleva luku #poistu while-silmukasta #Tulosta keskiarvo
Suuret kiitokset ohjeista ja neuvoista, sain tehtävän niiden ansiosta ratkaistua. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.