Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2013-08-26, 23:21
  #13
Medlem
Citat:
Ursprungligen postat av kanelbullen1
finns några problem med din while-sats, du har för det första gjort så att den yttersta while-satsen enbart kommer köras 1 gång då den enbart körs då n=20 vilket den inte är nästa "runda" då du i slutet skriver "n= n + 1" då blir n = 21 och inget mer körs.
I din innersta while-sats så skriver du villkoret "i == -20" du deklarerar "i" som en lista men "-20" är en int.. så denna stämmer aldrig och kommer där med aldrig köras.

hur länge vill du att din yttersta while-sats skall köras? hängde inte med i din förklaring



Då måste jag ha fått det här med while loop lite om bakfoten...


Det jag vill åstadkomma med while loopen är att den ska kolla för varje ord n om ordet upprepar sig 20 ord innan och 20 ord efter. Därför har i intervallet -20 till 20. Men jag vill att n ska ha lika stor intervall som antal ord i SplitText fast det ska börja med det 20e ordet. Kanske blev det tydligare kring vad jag försöker göra?!

Min tanke va att n (den yttersta while loopen) ska börja med 20 och sedan ska den plussas på med ett för varje runda tills SplitText tar slut, dvs ska bero på antal ord i listan SplitText.

För att i ska få SIFFRAN 20, ska jag då identifiera den som i=-20, men då måste jag väl identifiera n=20?! Eller är jag helt ute o cyklar igen?
Citera
2013-08-26, 23:24
  #14
Medlem
Citat:
Ursprungligen postat av jonthe12
Det kan ju vara en fördel att lyssna lite när andra försöker hjälpa till om man vill ha mer hjälp och går vidare. Anledningen till att det funkar för dig nu är för att du skapar instansvariabeln efter att du kör funktionen. D v s du kommer bara kunna köra metoden en gång, sen kommer du få samma felmeddelande som tidigare. Varför inte bara byta namn på den!?(!!!!!!!?)



Precis, instansvariablar verkar alltså "skriva över" metoder. Det är ju ganska logiskt eftersom funktioner inte måste följas av (). Exempelvis

Kod:
func obj.name1 #såklart helt omöjligt att veta ifall man vill ha metoden eller variabeln
func() #helt ok i Python (som kanske bekant, var inte helt säker innan jag provade :) ) 


Hmm jag har gjort det tidigare och det har funkat att ha samma namn, visste inte helt enkelt att det kunde skapa problem att ha samma namn, men man lär sig ngt nytt varjedag. Och hade experimenterat fram lösningen innan jag hann se ditt inlägg
Citera
2013-08-27, 12:23
  #15
Medlem
Tror jag förstår vad du menar!
Jag tänker mig att du bör göra något i följande stil

Kod:
n=20
while n<(len(ordlistan())-20):
    
i=n-20
    
while i<=n+20:
        if 
ordlistan(n)==ordlistan(i):
            
"Gör det du vill döra"
            
        
+1
    n
=n+

hoppas detta hjälper dig, du lär få trixa lite med koden men det är förhoppningsvis något i rätt riktning
Citera
2013-08-29, 13:09
  #16
Medlem
Nu funkade det som jag ville... loopen går igång. Problemet denhär gången är att ALLA ord ändras när endast upprepade ord ska göra det.



Kod:
    def ident(self):
        n=20
        while n< (len(self.SplitText)-20): 
            i=n-20
            while i<=n+20:
                if self.SplitText[n]==self.SplitText[i]:
                    self.SplitText[n]='*', self.SplitText[n], '*'
                i = i + 1
            n= n + 1


innan så gällde aldrig self.SplitText[n]==self.SplitText[i], nu gäller den istället ALLTID!!
__________________
Senast redigerad av dodi1990 2013-08-29 kl. 13:50.
Citera
2013-08-29, 15:10
  #17
Moderator
vhes avatar
Citat:
Ursprungligen postat av dodi1990
innan så gällde aldrig self.SplitText[n]==self.SplitText[i], nu gäller den istället ALLTID!!

Den jämförelsen lär givetvis bli sann då n == i, och eftersom du loopar från n - 20 till n + 20 så lär det ju inträffa minst en gång för varje n.
Citera
2013-09-01, 10:02
  #18
Medlem
Citat:
Ursprungligen postat av dodi1990
Hej jag har en uppgift jag försöker lösa, dock har jag fastnat och har två problem jag inte klarar av o lösa. Min uppgift är att jag ska ladda upp en textfil, sedan ska jag identifiera upprepade ord inom ett intervall av 40 ord. Upprepningar ska markeras med '*' före och efter det upprepade ordet.
Du skall markera upprepningar.
Alltså ingen markering första gången ett ord förekommer, även om det senare upprepas.
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback