14 svar
993 visningar
Lovisa9712 6 – Fd. Medlem
Postad: 5 jul 2020 13:29

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.

Laguna Online 28536
Postad: 5 jul 2020 16:31

Ta ett steg i taget. Skriv ett Python-program som läser in ett tal och skriver ut det igen.

Lovisa9712 6 – Fd. Medlem
Postad: 6 jul 2020 16:37

vad menas med det?

Laguna Online 28536
Postad: 6 jul 2020 17:00

Vilket? Att läsa in ett tal, eller skriva ut ett tal? 

SeriousCephalopod 2692
Postad: 6 jul 2020 17:01 Redigerad: 6 jul 2020 17:50

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., 

Lovisa9712 6 – Fd. Medlem
Postad: 6 jul 2020 19:02

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
 

Laguna Online 28536
Postad: 6 jul 2020 19:48

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.

Lovisa9712 6 – Fd. Medlem
Postad: 7 jul 2020 12:53

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")

Laguna Online 28536
Postad: 7 jul 2020 13:36

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.

Herranf 1 – Fd. Medlem
Postad: 20 jul 2020 19:01

Löste du uppgiften Lovisa?

Läser samma kurs, sitter fast tyvärr.

MMrkva 2 – Fd. Medlem
Postad: 21 jul 2020 10:20

Även jag sitter fast i denna uppgiften och skulle uppskatta lite guidning om hur man löser den.

Lovisa9712 6 – Fd. Medlem
Postad: 21 jul 2020 10:26

Har inte löst den än tyvärr... 

MMrkva 2 – Fd. Medlem
Postad: 21 jul 2020 10:47

Ska vi skapa en grupp så vi kan klura på uppgiften tillsammans?

Lovisa9712 6 – Fd. Medlem
Postad: 21 jul 2020 10:54

Jag har dessvärre även hoppat av kursen, insåg att programmering inte riktigt var min grej 🤪 önskar er lycka till!!!

Dubbelmargarita 1 – Fd. Medlem
Postad: 22 jul 2020 09:13
MMrkva skrev:

Ska vi skapa en grupp så vi kan klura på uppgiften tillsammans?

Ja, jag sitter också fast på den uppgiften! 

Svara Avbryt
Close