Nybörjare
Hej, jag har börjat en grundläggande kurs i programmering men får verkligen inte ihop något. Skulle behöva lite tips för att komma igång.
"Skriv ett Python-program som läser in ett godtyckligt antal födelseårtal tills dess att talet noll matats in. Programmet ska sedan skriva ut medelåldern samt hur gammal den yngsta respektive äldsta är. Till den här uppgiften kan du utgå från pseudokoden (separat) du fått för att komma igång."
Exempel på programkörning (användarens inmatningar i blått):
Mata in födelseårtal. För att avsluta, ange talet 0.
Årtal: 1998 Årtal: 1932
Årtal: 1887
Fel: Orimligt årtal. Försök igen.
Årtal: 1987
Årtal: -77
Fel: Orimligt årtal. Försök igen.
Årtal: 1963
Årtal: 0
Medelåldern är 49 år. Den yngsta är 21 år och den äldsta är 87 år.
Ta ett steg i taget. Skriv ett Python-program som läser in ett tal och skriver ut det igen.
vad menas med det?
Vilket? Att läsa in ett tal, eller skriva ut ett tal?
Du kan angripa det här på någotav två vis och du behöver börja med att bestämma dig för vilket.
Alt 1. Skriv om pseudokoden till pythonkod. Problemet är i praktiken redan löst. Det går bara att ta det där programmet och byta ut varje rad mot den motsvarande python-raden.
"sätt antal_år till noll" blir "antal_ar = 0"
"medan inmatat_ar inte är 0:" blir "while inmatat_at != 0:".
Alt 2. Skriv en egen lösning utan att bry dig om exempelkoden. I det fallet gör man som laguna föreslår att man bryter ner problemet i ett antal delproblem och löser dem. Några av delproblemen är
a) Måste läsa in tal tills dess att man får en 0:a. [[Det kan lösas med en while-loop och input så skriv någon som läser in tills du matar in en 0:a.
b) Bestämma ålder på vem som är äldst blan en samling personen mer olika födelseår. Okej. Så i det fallet kan jag börja med att jag har en lista med årtal [1991, 2004, 1982] och som tar en sådan lista och spottar ut den som är äldst. Okej. Det kan lösas med en for-loop... osv.
Du måste först bestämma dig för vilken av dessa två infallsvinklar du vill ta.,
Jag har börjat gå efter den givna pseudokoden och översätta den till python-kod. Jag undrar lite hur jag ska lösa denna raden:
"läs in ett värde från användaren och lagra det i inmatat_år", alltså det som kommer efter while-loopen (i fetstil). Min fråga är alltså vad de egentligen menar i denna instruktion.
Som sagt, är nybörjare men vill verkligen lära mig detta, haha. Tack hittills för alla bra svar!
Koden hittills ser ut såhär:
antal_ar=0
summa_ar=0
max_ar=0
min_ar=110
inmatat_ar=-1
while inmatat_ar!=0 :
print("Mata in födelseårtal. För att avsluta, ange talet 0.")
inmatat_ar=0
alder=(2020-inmatat_ar)
if alder<0 or alder>110 and alder !=2020 :
print("Orimligt årtal, försök igen.")
else:
if inmatat_ar > 0:
antal_ar+=1
summa_ar = summa_ar + alder
if alder < min_ar:
min_ar = alder
if alder > max_ar:
max_ar = alder
Det är alltså "läs in" som är oklart. Det betyder att när programmet kör så ska användaren skriva in någonting och sedan får programmet det i en variabel. Du får använda funktionen 'input'. Den står nog beskriven någonstans i det du har lärt dig hittills.
Tack!
När jag kör denna koden nu så synd inte den delen av koden i fetstil, alltså då jag vill ha fram medelvärdet samt yngsta och äldsta ålder. Vad kan det bero på? Det som kommer fram när jag kör koden är endast:
"Mata in födelseårtal. För att avsluta, ange talet 0.
Årtal: 1998, 1932, 1903, 2012, 2010, 1963, 2020, 0"
antal_ar=0
summa_ar=0
max_ar=0
min_ar=110
inmatat_ar=-1
while inmatat_ar!=0 :
print("Mata in födelseårtal. För att avsluta, ange talet 0.").
inmatat_ar = input("Årtal: 1998, 1932, 1903, 2012, 2010, 1963, 2020, 0")
inmatat_ar = int(input("Årtal: 1998, 1932, 1903, 2012, 2010, 1963, 2020, 0"))
alder=(2020-inmatat_ar)
if alder<0 or alder>110 and alder !=2020 :
print("Orimligt årtal, försök igen.")
else:
if inmatat_ar > 0:
antal_ar+=1
summa_ar = summa_ar + alder
if alder < min_ar:
min_ar = alder
if alder > max_ar:
max_ar = alder
sum_alder = 2+88+117+8+10+57+0
sum_antal = 8
print("Medelåldern är", sum_alder/sum_antal, "år")
print("Den yngsta är", 0, "år och den äldsta är", 117, "år")
Jag vet inte riktigt, men ett fel är att du gör input två gånger. Då blir användaren tvungen att mata in årtalet två gånger. Stryk den första av "inmatat_ar = ...".
Ett annat fel är att du räknar med åldern 2020 innan du avslutar (borde avsluta i alla fall).
Indenteringen är lite konstig. Programmet kan inte se ut som det gör här. Koden under 'while' ska vara inskjuten (indenterad) och det är den mestadels, men de där två input-raderna ligger fel, så man kan inte veta riktigt vad det är som körs.
Du kan stoppa in så kallade spårutskrifter för att följa exekveringen. Alltså skriv ut nåt enkelt, t.ex. "punkt 1", "punkt 2", etc. på diverse olika ställen, så ser du om programmet kommer dit.
Löste du uppgiften Lovisa?
Läser samma kurs, sitter fast tyvärr.
Även jag sitter fast i denna uppgiften och skulle uppskatta lite guidning om hur man löser den.
Har inte löst den än tyvärr...
Ska vi skapa en grupp så vi kan klura på uppgiften tillsammans?
Jag har dessvärre även hoppat av kursen, insåg att programmering inte riktigt var min grej 🤪 önskar er lycka till!!!
MMrkva skrev:Ska vi skapa en grupp så vi kan klura på uppgiften tillsammans?
Ja, jag sitter också fast på den uppgiften!