Gå til innhold

Hvordan dele opp setning fra raw_input?


Anbefalte innlegg

I en annen tråd på forumet skrøyt jeg på meg at jeg skulle skrive et program hvor man kunne skrive inn hva som helst, så få det ut igjen, stokket om. Det var kun innbyrdes i ordene det skulle stokkes, og første bokstaven skulle være først.

 

"Hallo du!" = "Hlalo ud!"

 

Det med å stokke ordene fikk jeg til (har som dere kanskje skjønner ikke holdt på med dette mange ukene), nå lurer jeg på hvordan jeg kan dele inputen i flere tuple (bedre med liste kanskje?) slik at jeg kan få stokket hele setninger.

 

Hadde satt veldig pris på hjelp :)

 

PS: Er på jobb nå, og har koden min hjemme, men skal laste den opp senere i dag slik at dere får kritisert den også.

Lenke til kommentar
Videoannonse
Annonse
"Hallo du!" = "Hlalo ud!"

 

Det med å stokke ordene fikk jeg til (har som dere kanskje skjønner ikke holdt på med dette mange ukene), nå lurer jeg på hvordan jeg kan dele inputen i flere tuple (bedre med liste kanskje?) slik at jeg kan få stokket hele setninger.

 

Det å stokke om ord i en setning er en ekvivalent problemstilling med det å stokke om bokstaver i et ord. Jeg vet ikke helt om jeg forstod hva du mener med "dele inputen i flere tuple".

 

raw_input(...).split() gir deg en liste med alle elementene som skal stokkes om. Du kan bruke enten list comprehension eller map() til å stokke om bokstavene i hvert ord, og du kan bruke den samme teknikken (altså, random.shuffle) til å stokke om hele "setningen".

Lenke til kommentar

Hehe, når man ikke kan så mye om noe er det vanskelig å forklare hva det er man ikke får til, skal prøve litt bedre:

 

Jeg har skrevet en kode som stokker om bokstavene i et ord slik jeg vil. Altså hvor første bokstaven er først, mens de resterende er i en random rekkefølge.

 

Jeg vil være i stand til å gjøre dette, men å gjøre det med alle ordene in en raw_input. Altså når en person har skrevet "Fire fem seks" i inputen, skal programmet stokke først "Fire", så "fem" så "seks" og gi den ut igjen med ordene i rett rekkefølge. Eks "Frie fme skse"

Lenke til kommentar
Jeg vil være i stand til å gjøre dette, men å gjøre det med alle ordene in en raw_input.

 

map eller list comprehension på raw_input().split(), slik foreslått alt, forutsatt at du har en funksjon som stokker om på bokstavene i et ord:

 

user_input = raw_input("sentence> ").split()
user_input = [shuffle(x.strip()) for x in user_input if x.strip()]
print " ".join(user_input)

 

shuffle er da en funksjon som du har alt.

Lenke til kommentar
Ser nå at jeg har overvurdert meg selv litt :D Skal sette meg ned og leke litt med tipsene dine, tusen takk :)

 

Eh, overvurdert? Det er 3 linjer kode for å transformere input, og 3 linjer til for å stokke om alle på bokstavene i et ord unntatt første og siste. Nå er ikke det et mål i seg selv, men det er virkelig lett i Python.

 

Oppfølgerspørsmål -- gitt en permutasjon av bokstaver, finn tilbake til en mulig starttekst, gitt en ordbok der ordene ble i utgangspunktet tatt fra. For extra credit -- finn alle starttekster som kunne ha gitt oppgav til den permuterte teksten, igjen med utgangspunktet i en ordbok.

Lenke til kommentar

user_input = raw_input("sentence> ").split()
user_input = [shuffle(x.strip()) for x in user_input if x.strip()]
print " ".join(user_input)

 

Kan skrive det om litt mer verbose :)

 

user_input = raw_input("sentence> ")
words_list = user_input.split()
resulting_words = []
for word in words_list:
  if word.strip():
scrambled_word = shuffle(word.strip())
resulting_words.append(scrambled_word)
print " ".join(resulting_words)

 

Det er den litt lengre versjonen av samme kodesnutten :) Kanskje litt lettere å lese. Gjør det også lettere å gå igjennom deler av koden manuelt for å forstå bedre hva som skjer.

Endret av Terrasque
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...