dabear Skrevet 29. august 2005 Del Skrevet 29. august 2005 Jeg holder på en «primefinder» sak, og i den forbindelse må jeg kjøre en loop et uvisst antall ganger. Hvordan forandrer jeg antall loops? Jeg prøvde noe liknende som den følgende koden, men den viste seg bare å printe ut 10 gang. Jeg prøvde i tillegg å bruke global iterateNumber, men ingen forandringer #! /usr/bin/python # -*- encoding: iso-8859-1 -*- #iterate 10+1 times iterateNumber = 10 for x in range(iterateNumber): if x == 2: iterateNumber +=1 print '\tLa til én iterasjon, eller?' print 'iterasjonsnummer ',x+1 Lenke til kommentar
zeitgeist Skrevet 29. august 2005 Del Skrevet 29. august 2005 Når du bruker range slik, så har du allerede definert en mengde. Det spiller ingen rolle hva du gjør med iterateNumber etterpå. Du kunne f.eks si iterateNumber = 10 IN = range(iterateNumber) for x in IN: if x == 2: IN.append(IN[-1] + 1) # append største/siste tall + 1 ... Men jeg tror jeg ville ha brukt en annen måte. Lenke til kommentar
A_N_K Skrevet 29. august 2005 Del Skrevet 29. august 2005 Bruk heller while True og break for å stoppe. Lenke til kommentar
dabear Skrevet 29. august 2005 Forfatter Del Skrevet 29. august 2005 Nå har jeg prøvd i flere timer, men får det ikke til. I php gjør jeg det lett med en for loop, hvordan gjør jeg dette i python? function isPrime($p){ for($i = 2; $i < $p; $i++) { if($p % $i == 0) return false; } return true; } Her er pythonfunksjonen som jeg ikke får til: def isPrime(p): i = 2 if p < 0: p *= -1 #as long i is less than p, return i and increment i by one #for($i = 2; $i < $p; $i++){ while True: if i < p: i += 1 if p % i == 0: return False return True #end-def Lenke til kommentar
zeitgeist Skrevet 29. august 2005 Del Skrevet 29. august 2005 Noe slikt, kanskje? def isPrime(p, i= 2): while i < p: if p % i == 0: return False i += 1 return True Lenke til kommentar
dabear Skrevet 29. august 2005 Forfatter Del Skrevet 29. august 2005 zeitgeist skrev: Noe slikt, kanskje? def isPrime(p, i= 2): while i < p: if p % i == 0: return False i += 1 return True Slik mener du? def isPrime(p, i= 2): while i < p: if p % i == 0: return False i += 1 return True #end-def Denne koden står bare og laster konstant. Lenke til kommentar
zeitgeist Skrevet 29. august 2005 Del Skrevet 29. august 2005 Sorry, jeg bruket TAB som indent. Rykk inn i += 1, og legg til sjekken til for neg. tall øverst. Lenke til kommentar
dabear Skrevet 29. august 2005 Forfatter Del Skrevet 29. august 2005 (endret) zeitgeist skrev: Sorry, jeg bruket TAB som indent. Rykk inn i += 1, og legg til sjekken til for neg. tall øverst. beklager, du kunne ikke skrive det med kode? Jeg forstod nemlig ikke helt hva du mente edit: var det slik du mente? def isPrime(p, i= 2): if p < 0: p *= -1 while i < p: if p % i == 0: return False i += 1 return True #end-def Den står fortsatt og laster uten å gi meg noe svar når jeg prøver if isPrime(5): print '!!!is prime:', 5 edit2: Rykka inn return True, og da fikk jeg denne tilbake: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99] Endret 29. august 2005 av dabear Lenke til kommentar
zeitgeist Skrevet 29. august 2005 Del Skrevet 29. august 2005 Det finnes et eksempel i tutorialen: http://docs.python.org/tut/node6.html#SECT...000000000000000 Lenke til kommentar
Orjanp Skrevet 3. september 2005 Del Skrevet 3. september 2005 (endret) dabear skrev: zeitgeist skrev: Sorry, jeg bruket TAB som indent. Rykk inn i += 1, og legg til sjekken til for neg. tall øverst. beklager, du kunne ikke skrive det med kode? Jeg forstod nemlig ikke helt hva du mente edit: var det slik du mente? def isPrime(p, i= 2): if p < 0: p *= -1 while i < p: if p % i == 0: return False i += 1 return True #end-def Den står fortsatt og laster uten å gi meg noe svar når jeg prøver if isPrime(5): print '!is prime:', 5 edit2: Rykka inn return True, og da fikk jeg denne tilbake: 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99] Ren logikk tilsier at det ikke er noe poeng å ha 'i += 1' etter en return. Den vil aldri bli utført. Derfor skal den en tab tilbake. return True skal heller ikke rykkes ett hakk inn fordi de da alltid vil utføres, eller i de fleste tilfellene returnere True. For at denne skal fungere skal den se slik ut, noe det er fullt mulig å lese utifra første gangen det ble vist. Hvis du ser etter så ser du tab innrykkene. def isPrime(p, i= 2): while i < p: if p % i == 0: return False i += 1 return True #end-def Endret 3. september 2005 av Orjanp 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å