Carpe Dam Skrevet 29. september 2009 Del Skrevet 29. september 2009 Går datateknikk (skal bli byggingeniør, så ser ikke helt vitsen) på UiS og har da fått i oppgave å programmere noe shit i Python. Gikk helt fint helt til jeg skulle bruke en metode som var gitt i oppgaven (vi fikk en .py med noen bein vi skulle kjøtte opp). Da fikk jeg som svar at returverdien visstnok ikke er definert globalt, eller noe i den dur. Noen som kan se på det? #Lab2.py #Main metoden def main(): tabell = [2, 6, 8, 13, -1, 3] print("Dette er den usorterte tabellen: ") skrivTabell(tabell) print("Dette er den ferdig sorterte tabellen: ") sorterTabell(tabell) skrivTabell(tabell) sokTall = int (input ("Skriv inn tallet du vil søke etter." )) print () binSok (tabell, 0, len(tabell) - 1, sokTall) if resultat == -1: print ("Tallet finnes ikke i tabellen") if resultat >= -1: printResultat = (resultat + 1) print ("Tallet finnes i tabellen på plass nummer ") print (printResultat) #End of main metoden #Metode for å skrive ut en tabell til skjermen def skrivTabell(tab): i = 0 while i <len(tab): print(tab) i = i + 1 print () #End of while-loop #End of skrivTabell #Metode for å sortere tabell. Boblesortering def sorterTabell(usortTab): M = len(usortTab) while M >= 1: N = 1 while N < M: if usortTab[N-1] > usortTab[N]: usortTab[N-1], usortTab[N] = usortTab[N], usortTab[N-1] #End of if N = N + 1 #End of inner while-loop M = M -1 #End of outer while-loop #End of sorterTabell #Metode for å søke i en tabell def binSok(sortTab, start, slutt, maal): if start > slutt: resultat = -1 else: test = int(start + (slutt-start)/2) if maal == sortTab[test]: return test else: if maal < sortTab[test]: slutt = test - 1 else: start = test + 1 resultat = (binSok(sortTab, start, slutt, maal)) return resultat #End of binSok #Metode for å fylle en tabell med tall mellom to gitte tall (a og b) def fyllTabell(innTab, a, b): #Skriv inn programmkoden for oppgave b her. print("Denne metoden er under konstruksjon") #End of fyllTabell Feilmeldingen er som følger: Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> main () File "C:\Documents and Settings\Christian\Desktop\PajtonFS\Lab2.py", line 16, in main if resultat == -1: NameError: global name 'resultat' is not defined Lenke til kommentar
GeirGrusom Skrevet 29. september 2009 Del Skrevet 29. september 2009 Variabler blir definert i python når du setter en verdi til dem. I dette tilfellet prøver du å lese fra en variabel som enda ikke er definert. Her er feilen: binSok (tabell, 0, len(tabell) - 1, sokTall) if resultat == -1: du må sette resultat til det som binSok returnerer. Lenke til kommentar
Carpe Dam Skrevet 29. september 2009 Forfatter Del Skrevet 29. september 2009 Men blir ikke variabelen "resultat" definert på slutten av binSok? Metoden ligger lengre nede i koden, om jeg ikke har tabbet meg. Lenke til kommentar
GeirGrusom Skrevet 29. september 2009 Del Skrevet 29. september 2009 Men den er kun definert innenfor binSok, denne variablen forsvinner ut av scope når funksjonen er ferdig. Lenke til kommentar
Carpe Dam Skrevet 29. september 2009 Forfatter Del Skrevet 29. september 2009 Nettopp. Åssen fikser jeg det? Lenke til kommentar
Carpe Dam Skrevet 29. september 2009 Forfatter Del Skrevet 29. september 2009 Da gav jeg opp og leverte. Fordømte tulleoppgaver. Lenke til kommentar
jonnor Skrevet 29. september 2009 Del Skrevet 29. september 2009 Nettopp. Åssen fikser jeg det? resultat = BinSok(tabell, 0, len(tabell) - 1, sokTall) 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å