HauksA Skrevet 17. juni 2009 Del Skrevet 17. juni 2009 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
zotbar1234 Skrevet 17. juni 2009 Del Skrevet 17. juni 2009 "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
HauksA Skrevet 17. juni 2009 Forfatter Del Skrevet 17. juni 2009 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
zotbar1234 Skrevet 17. juni 2009 Del Skrevet 17. juni 2009 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
HauksA Skrevet 17. juni 2009 Forfatter Del Skrevet 17. juni 2009 Ser nå at jeg har overvurdert meg selv litt Skal sette meg ned og leke litt med tipsene dine, tusen takk Lenke til kommentar
zotbar1234 Skrevet 17. juni 2009 Del Skrevet 17. juni 2009 Ser nå at jeg har overvurdert meg selv litt 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
HauksA Skrevet 17. juni 2009 Forfatter Del Skrevet 17. juni 2009 Skal notere ned og sende deg PM når jeg får det til Vet at slikt skal være lett i python, men når man ikke kan så mye må man som regel ta mange omveier. Lenke til kommentar
Terrasque Skrevet 22. juni 2009 Del Skrevet 22. juni 2009 (endret) 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 22. juni 2009 av Terrasque 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å