Laguna skrev:
Nu vet jag varken vad du har gjort eller vad resultatet är.
mening = input("Mata in din rövarmening: ")
konsonanter = "bcdfghjklmnpqrstvwxz "
for i in range(1):
for i in konsonanter:
if i + "o" + i in mening:
print(mening.replace(i + "o" + i, i))
Om jag skriver "hohejoj" nu får jag ut:
"hejoj
hohej"
den liksom går igenom varje konsonant och behåller föregående konsonant+o+konsonant när den går igenom nästa konstellation.
Lindehavens pseudokod är säkert bra, men jag ska se om man kan reparera den här koden. Till att börja med gör
for i in range(0)
ingenting, den gör att du kör resten en gång, vilket skulle ske även utan den raden.
mening.replace byter ut och returnerar resultatet, men den ändrar inte originalsträngen. Så ingenting händer med 'mening'. Du kan göra så här:
mening = mening.replace(i + "o" + i, i)
Tack för svaren. Har följande kod nu:
mening = input("Mata in din rövarmening: ")
konsonanter = "bcdfghjklmnpqrstvwxz "
for i in konsonanter:
if i in mening:
mening = mening.replace(i + "o" + i, i)
print(mening)
else:
print("fel")
Den delen fram till "print(mening)" funkar nu, men jag vill ju göra så att den säger "fel" när man skrivit in fel rövarmening. Varför funkar det inte nu?
Laguna skrev:
Om du ska ha "else" måste du ha en "if" tidigare på samma nivå.
Kan du beskriva i ord när det inte är en rövarmening?
Vad jag har förstått av uppgiften så är det inte en rövarmening när det inte är konsonant + o + samma konsonant. Men jag menar det kan ju finnas namn som är så? Tex Lollo? Det är ju inte en rövarmening, men uppfyller ändå kravet? Antar att det ska vara så för alla konsonanter. Hursomhelst, ifall man bortser från det, hur gör man då? Följande är där jag ligger nu:
mening = input("Mata in din rövarmening: ")
konsonanter = "bcdfghjklmnpqrstvwxz "
for i in konsonanter:
if i + "o" + i not in mening:
print("felaktig rövarmening")
else:
mening = mening.replace(i + "o" + i, i)
print("din originalmening är: " + mening)
Men det verkar ändå inte funka. Jag blir galen.
Laguna skrev:
Tolererar python verkligen den där indenteringen?
Problemet med koden är att den säger att det är fel så fort det är någon konsonant som inte förekommer. Den ska ge fel bara om ingen konsonant förekommer.
Det är därför jag föredrar
mening = input("Mata in din rövarmening: ")
konsonanter = "bcdfghjklmnpqrstvwxz "
for i in konsonanter:
if i + "o" + i not in mening:
print("felaktig rövarmening")
else:
mening = mening.replace(i + "o" + i, i)
print("din originalmening är: " + mening)
som ju inte funkade, men som ändå är steget närmare? Eller?
Gå tillbaka till koden som fungerade, så ska vi lägga till logiken som säger att strängen inte är en rövarmening.
Hur såg den ut?
Laguna skrev:
Gå tillbaka till koden som fungerade, så ska vi lägga till logiken som säger att strängen inte är en rövarmening.
Hur såg den ut?
Ok så här:
Följande kod ger mig rätt översättning från rövarmening:
for i in konsonanter:
if i in mening:
mening = mening.replace(i + "o" + i, i)
print("din originalmening är: " + mening)
Jag vill att den ger mig fel om jag matar in fel. Än så länge är jag med:)
villsovaa skrev:
Jag vill att den ger mig fel om jag matar in fel. Än så länge är jag med:)
Ge ett exempel på ett sådant fel och vad du vill att programmet ska "ge".