KenVertKRO Skrevet 20. januar 2015 Del Skrevet 20. januar 2015 Hei! Sitter her å klundrer å får ikke til første oppgaven her en gang, håper så inderlig noen kan være behjelpelige her. Oppgaven går som følger: Lag et program som spør brukeren etter tall i en while-løkke. Tallene som brukeren skriver inn skal legges inn i en liste. Når brukeren er ferdig med å taste inn tall (trykke Enter eller en annen måte signaliserer at han er ferdig), skriv ut tallene brukeren har skrevet til skjerm. Tell antall tall, summen, laveste og høyeste tallet som er skrevet inn samt gjennomsnittet (summen/antall tall). Eksempel på kjøring: Skriv inn et tall eller trykk Enter for å avslutte: 4 Skriv inn et tall eller trykk Enter for å avslutte: 9 Skriv inn et tall eller trykk Enter for å avslutte: 1 Skriv inn et tall eller trykk Enter for å avslutte: 2 Skriv inn et tall eller trykk Enter for å avslutte: Tallene: [4,9,1,2] Antall 4 Sum 16 Minste 1 Største 9 Gjennomsnitt 4 Lenke til kommentar
Sampson Skrevet 20. januar 2015 Del Skrevet 20. januar 2015 Vel, virker litt rart med while løkke for det der istedenfor en if setning, men anyway. Du må ha en "while input != sluttkommando" -> request ny input og putt i liste a så har du en print a til slutt, når du får til å legge inn listen og printe den ut, kan du gjøre resten av printingen for a. Ta ett steg av gangen så slipper du å lete etter feil. Lenke til kommentar
KenVertKRO Skrevet 20. januar 2015 Forfatter Del Skrevet 20. januar 2015 Takk for svar. while input != sluttkommando..? Jeg er ganske så grønn på dette område. Jeg skal altså ikke begynne med tall1 = (int(input("Skriv inn første tallet: ")), tall2 = (int(input("Skriv inn andre tallet: ")) osv..? Og heller ikke liste = [4, 9, 1, 2], å bruke len, max, min? Lenke til kommentar
Sampson Skrevet 20. januar 2015 Del Skrevet 20. januar 2015 slik du har ordlagt oppgaven vet du jo ikke hvor mange tall som skal være i listen, så da må du jo ha en måte å avslutte listen på. Men hvis du kan feks sette et maks antall tall i listen kan du gjøre dette: a = []tall = 0 maxLengthList = 4while len(a) < maxLengthList: tall = input('Skriv inn et tall') a.append(tall) print a Lenke til kommentar
KenVertKRO Skrevet 20. januar 2015 Forfatter Del Skrevet 20. januar 2015 Ok. Om jeg ikke skal sette et maks antall bare fjerner jeg maxLengthList = 4while len(a) < maxLengthList:? Skal jeg bruke len, min max? Lenke til kommentar
Sampson Skrevet 20. januar 2015 Del Skrevet 20. januar 2015 Ja da må du bytte ut den måten å slutte listen på med en annen. Et kodeord fungerer best, men du må vel ifølge oppgaven ha en while løkke, da kan du også bruke en if setning for å slutte listen. Bruk google flittig og se gjennom hva læreren har gjort i forelesningene. Lenke til kommentar
maedox Skrevet 21. januar 2015 Del Skrevet 21. januar 2015 (endret) En liten digresjon, men maxLengthList i Python-verden skal være max_length_list. nums = [] while True: num = input('Skriv inn et tall eller trykk Enter for å avslutte: ') if not num: break try: num = int(num) nums.append(num) except ValueError: print('{0} er ikke av type int'.format(num)) if nums: antall = len(nums) summert = sum(nums) print('\nTallene: {0}'.format(nums)) print('Antall: {0}'.format(antall)) print('Sum: {0}'.format(summert)) print('Minste: {0}'.format(min(nums))) print('Største: {0}'.format(max(nums))) print('Gjennomsnitt: {0}'.format(summert / antall)) Skriv inn et tall eller trykk Enter for å avslutte: 4 Skriv inn et tall eller trykk Enter for å avslutte: 9 Skriv inn et tall eller trykk Enter for å avslutte: 1 Skriv inn et tall eller trykk Enter for å avslutte: 2 Skriv inn et tall eller trykk Enter for å avslutte: Tallene: [4, 9, 1, 2] Antall: 4 Sum: 16 Minste: 1 Største: 9 Gjennomsnitt: 4.0 Endret 21. januar 2015 av maedox Lenke til kommentar
Sampson Skrevet 21. januar 2015 Del Skrevet 21. januar 2015 Lærer litt lite hvis en bare får fasit ^^ Maxlength slik jeg skrev fungerte for meg i Pycharm 2.7 dog +1 for god løsning. Lenke til kommentar
maedox Skrevet 22. januar 2015 Del Skrevet 22. januar 2015 Lærer litt lite hvis en bare får fasit ^^ Maxlength slik jeg skrev fungerte for meg i Pycharm 2.7 dog +1 for god løsning. Joda, men man kan bli lei av å bare stange i veggen. Siden han ikke kom tilbake med flere spørsmål tenkte jeg det var greit. Jeg har lært "alt jeg kan" av å lese andres kode, så det er ikke en dårlig måte å lære på. Man må bare passe på å tenke selv også i blant. Angående maxLengthList vs. max_length_list så fungerer selvfølgelig begge deler, men PEP-8 anbefaler camelcase kun for klassenavn. Det blir en smakssak, men man bør holde seg til standardene. Lenke til kommentar
KenVertKRO Skrevet 22. januar 2015 Forfatter Del Skrevet 22. januar 2015 Tusen takk for veldig god hjelp! Ja, jeg har stanget i veggen, hardt og lenge. Ingen dårlig måte å lære på nei, du løsnet noen tråder oppe i hodet mitt nå Lenke til kommentar
Imsvale Skrevet 22. januar 2015 Del Skrevet 22. januar 2015 Så lenge man har tenkt grundig gjennom oppgaven selv, og helst forsøkt noen løsninger, er det helt kurant og ofte lærerikt å se på andres løsninger. Det er det som er viktigst: å bryne hjernen, enten man til slutt får det til eller ikke. Lenke til kommentar
KenVertKRO Skrevet 22. januar 2015 Forfatter Del Skrevet 22. januar 2015 Kunne dere tatt en titt på denne? Et boktrykkeri beregner sine priser på følgende måte:Fast pris per opplag: kr. 20 000,-Tillegg per eksemplar: kr. 200,-Lag en funksjon som beregner og skriver til skjerm total pris når du kjenner antall eksemplarer.b) Lag en ny funksjon med samme forutsetninger som i oppgave a), men i tillegg skal det gis 10% rabatt dersom totalpris blir over kr. 30 000,-. Det som skal skrives ut er totalpris, eventuell rabatt og sluttpris. #adef boktrykkeri(antall): opplagspris=20000 perEksemplar=200 totalpris=opplagspris+perEksemplar*antall print("Total pris blir:",totalpris) #totalpris=20000+200*antall#bdef boktrykkeriv2(antall): opplagspris=20000 if totalpris<30000 avgift=totalpris*1.23-pris print("Avgiften er",round(avgift) Er noe alvorlig krøll her altså.. Lenke til kommentar
snippsat Skrevet 23. januar 2015 Del Skrevet 23. januar 2015 (endret) Er noe alvorlig krøll her altså.. Ja "boktrykkeriv2" funksjon er bare krøll,har du prøvd og kjøre koden? Bruk kode tag,og post "Traceback" du får. "boktrykkeriv2" har feil logikk,SyntaxError(mangler : ), argument(antall) som ikke blir brukt og totalpris/pris er ikke definert i denne funksjonen. Du må trene mer på funksjoner i samarbeid,med og gi og motta argumenter. Vet ikke om "hint" hjelper her,må skrive om helt til noe som dette. def boktrykkeri(antall): opplagspris = 20000 perEksemplar = 200 totalpris = opplagspris + perEksemplar * antall if totalpris > 30000: boktrykkeriv2(totalpris) else: print("Total pris blir: {},-".format(totalpris)) def boktrykkeriv2(totalpris): rabatt = totalpris * 10 / 100 pris = totalpris - rabatt print("Pris {},- har rabatt på {},-\nTotlal pris blir {},-"\ .format(totalpris, rabatt, pris)) if __name__ == '__main__': #antall = 20 antall = 100 #over 30000 kaller boktrykkeriv2 boktrykkeri(antall) Det bør skrive kode i engelsk språk, det eneste som er greit og bruke norsk til er det bruker ser som output. Endret 23. januar 2015 av snippsat Lenke til kommentar
Imsvale Skrevet 23. januar 2015 Del Skrevet 23. januar 2015 (endret) 1) Totalpris er ikke definert i den andre funksjonen. 2) Du har også skrevet pris der du antakelig mente totalpris(?). Pris er ikke definert noe sted. 3) Istedenfor totalpris*1.23-totalpris, kan du ta totalpris*0.23. 4) Du mangler kolon på if-linja i funksjon b. 5) Du mangler en sluttparentes på siste linje i funksjon b. Ser ikke noe om avgift eller 23 % noe sted i oppgaven. Antar dette kommer fra noe annet? Har du postet feil kode? Du skal alltid beregne og skrive ut totalpris (siden de skiller mellom totalpris og sluttpris). Da kan du la første funksjon være den som beregner og skriver ut dette, og så bruker du den første funksjonen i den andre for å hente totalprisen. Denne bruker du da videre i den andre funksjonen. Jeg drister meg til å påstå at snippsatt har tenkt litt for fritt i forhold til oppgaven; hvis man skal gjøre a) og b) i den rekkefølgen, så blir det ikke snakk om å endre funksjon a) med hensyn på det som skal skje i oppgave b). Da roter man til det som skal skje i a) isolert sett, for den skal ikke alene kunne hensyn til eventuell rabatt. Men man bør kunne bruke a) videre i b). Det er også fint å bruke code-taggene så får du postet penere/mer lesbar kode med riktig indentering. Se nøye på feilmeldingen du får når du prøver å kjøre koden. Der får du mye informasjon, og hvis du sliter med å tolke den, så lær deg dette. Endret 23. januar 2015 av Imsvale Lenke til kommentar
Krovert Skrevet 12. mars 2015 Del Skrevet 12. mars 2015 Trenger virkelig hjelp til en ny oppgave her nå: Lag en klasse Student som inneholder fire objektvariabler/attributter: fornavn, etternavn, studentnummer, antoppgaver, hvor antoppgaver er hvor mange godkjente oppgaver studenten har. Klassen skal ha disse metodene: Innlegging av student (__init__), hente opplysninger for en student, endre fornavn etternavn/studentnummer for en student, endre antall godkjente oppgaver for en student. Du skal lage et program som legger inn objektene i en samling (liste, tuppel...). La programmet gå i en løkke (for inntasting av nye studenter med mer). Lag en meny funksjon som muliggjør: Valg av funksjoner knyttet til metodene du har laget i a) Regner ut gjennomsnitt av antall godkjente oppgaver for alle studentene (fra listen, tuppelen...) Søke opp informasjon om en student basert på studentnummer Utskrift av alle student - objektene i samlingen (fornavn, etternavn, studentnummer og antoppgaver) Har gjort følgende så langt: #Oppgave 1#a)class Student: def __init__(self,fornavn,etternavn,studentnummer,antoppgaver): self.fornavn = fornavnet self.etternavn = etternavnet self.studentnummer = studentnummeret self.antoppgaver = antoppgavene def setFornavn(self,fornavnet): self.fornavn = fornavnet def getFornavn(self): return self.fornavn def setEtternavn(self,etternavnet): self.etternavn = etternavnet def getEtternavn(self): return self.etternavn def setStudentnummer(self,studentnummeret): self.studentnummer = studentnummeret def getStudentnummer(self): return self.studentnummer def setAntoppgaver(self,antoppgavene): self.antoppgaver = antoppgavene def getAntoppgaver(self): return self.antoppgaver Lenke til kommentar
Krovert Skrevet 12. mars 2015 Del Skrevet 12. mars 2015 Og: def opplysninger(self): '''Metode som henter opplysninger for en student''' opplysninger = self.fornavn +" er og " +self.etternavn +" er " +str(self.studentnummer) +" er og \n"\ +" Antall godkjente oppgaver er: "+self.antoppgaver return opplysninger Er jeg på ville veier? Lenke til kommentar
Imsvale Skrevet 12. mars 2015 Del Skrevet 12. mars 2015 (endret) class Student: def __init__(self,fornavn,etternavn,studentnummer,antoppgaver): self.fornavn = fornavnet self.etternavn = etternavnet self.studentnummer = studentnummeret self.antoppgaver = antoppgavene Her har du rotet litt med rekkefølgen. Slik du har gjort det i resten av koden må du rette det opp ved å endre argumentene slik at det er samsvar med det som skal inn i attributtene (self.bla): def __init__(self, arg): self.attr = arg Når det er sagt, så behøver du ikke ha forskjellig navn på argument og attributt. Dette funker fint og er antakelig å foretrekke: def __init__(self, navn): self.navn = navn Så blir det mye enklere å holde styr på. Ellers ser det greit ut for meg så langt. Fint om du stiller mer konkrete spørsmål, for vi vet ikke hva du sliter med. Jeg antar smått at du ikke vet hvor du skal begynne med menyen og hvordan holde styr på studentene? Opplysningene om studenter, skal det skrives ut (print) eller hentes for senere bruk (return)? Endret 12. mars 2015 av Imsvale Lenke til kommentar
snippsat Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 Du kan slette all get/set metodene,de er unødvendige,og gjør koden mindre lesbar. Er jeg på ville veier? Nei ikke helt. Dropp alle +,og "er og er ...",bruk string formmating. class Student: def __init__(self,fornavn,etternavn,studentnummer,antoppgaver): self.fornavn = fornavn self.etternavn = etternavn self.studentnummer = studentnummer self.antoppgaver = antoppgaver def opplysninger(self): '''Metode som henter opplysninger for en student''' return 'Fornavn: {}\nEttennavn: {}\nStudentnummer: {}\nAntoppgaver: {}'\ .format(self.fornavn,self.etternavn, self.studentnummer, self.antoppgaver) Test: >>> person = Student('Ola', 'Normann', 50, 'Tull') >>> print(person.opplysninger()) Fornavn: Ola Ettennavn: Normann Studentnummer: 50 Antoppgaver: Tull >>> person.fornavn = 'Supermann' #set >>> person.etternavn = 'Clark Kent' #set >>> print(person.opplysninger()) #get Fornavn: Supermann Ettennavn: Clark Kent Studentnummer: 50 Antoppgaver: Tull Lenke til kommentar
Krovert Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 Tusen hjertelig takk for veldig god hjelp! Hva skulle jeg gjort uten dere. Skjønner ikke helt hvordan jeg starter oppgave b: Du skal lage et program som legger inn objektene i en samling (liste, tuppel...). La programmet gå i en løkke (for inntasting av nye studenter med mer). Lag en meny funksjon som muliggjør: - Valg av funksjoner knyttet til metodene du har laget i a) - Regner ut gjennomsnitt av antall godkjente oppgaver for alle studentene (fra listen,tuppelen...) - Søke opp informasjon om en student basert på studentnummerUtskrift av alle studentobjektene i samlingen (fornavn, etternavn, studentnummerogantoppgaver) Blir det riktig å begynne slik..? #Oppgave 1#b)from student import StudentansattStudent =[]while True: Lenke til kommentar
Imsvale Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 Hvilken linje sikter du til? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå