Gå til innhold

Python, hjelp til å komme i gang (nybegynner)


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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 = 4
while len(a) < maxLengthList:
tall = input('Skriv inn et tall')
a.append(tall)
print a

Lenke til kommentar

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

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 av maedox
Lenke til kommentar

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

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.

 

#a
def boktrykkeri(antall):
opplagspris=20000
perEksemplar=200
totalpris=opplagspris+perEksemplar*antall
print("Total pris blir:",totalpris)
#totalpris=20000+200*antall
#b
def 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
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 av snippsat
Lenke til kommentar

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? :p

 

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 av Imsvale
Lenke til kommentar
  • 1 måned senere...

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

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

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 av Imsvale
Lenke til kommentar

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

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 Student

ansattStudent =[]
while True:

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...