2 svar
88 visningar
Luffy är nöjd med hjälpen
Luffy 449 – Fd. Medlem
Postad: 10 nov 2022 16:38 Redigerad: 10 nov 2022 16:39

TypeError, Stränghantering, Python

vokaler = 'aouåeiyäöAOUÅEIYÄÖ'

def allsprak(mening):
    mening=mening.split()
    for i in mening:
        if mening[0] in vokaler:
            return mening
        mening=mening[1:] + mening[0]
        return allsprak(mening)
    print(allsprak(mening))

Jag har följande funktion som jag har skapat som jag vill ska ta en sträng (mening), splitta den till en lista och sedan för varje element (ord) i listan så vill jag att den ska ta alla bokstäver i ordet som ligger framför den första vokalen och sedan lägga de i slutet av ordet istället.

T.ex om jag har input:

Stort och fint träd

så vill jag få output:

ortSt och intf ädtr

 

Jag får däremot TypeError vid:

mening=mening[1:] + mening[0]

 

Om jag tar bort följande rad

(*)

mening=mening.split()

så får jag output:

ort och fint trädSt

Vill dock loopa igenom varje ord och måste därför ha kvar (*) för att kunna göra det.

Vet inte riktigt hur jag ska fixa till detta och skulle behöva hjälp.

Laguna Online 28587
Postad: 10 nov 2022 16:50

Jag tror det ska vara i någonstans där det står mening, men det räcker nog inte. Det ska vara en loop i en loop, en yttre som tar fram ett ord i taget, och en inre som går igenom ordet.

cjan1122 416
Postad: 10 nov 2022 22:16 Redigerad: 10 nov 2022 22:17

Precis som Laguna skriver borde du ha nestade for-loopar för ord i meningen och den inre för bokstav i ordet.

def allsprak(inrad):
    utrad=""
    mening=inrad.split(" ")
    for ord in mening:
      for i in range(len(ord)):
        if ord[i] in vokaler:
          "Flytta om ordet m.h.a indexet i för första vokalen, lägg till i utrad"
          break
    return utrad

Lite pseudokod för dessa loopar, borde kunna hjälpa dig på traven.

Svara Avbryt
Close