• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

anagram w pythonie

Object Storage Arubacloud
0 głosów
1,809 wizyt
pytanie zadane 24 lutego 2018 w Python przez jasmen11 Nowicjusz (240 p.)

Witam mam problem, chce napisać program który po wprowadzeniu danego słowa, wypisuje na ekran dokładnie odwrotność jego (anagram). Nie wiem gdzie robię błąd.

# Zwariowany łańcuch
# Demonstruje użycie pętli for z łańcuchem znaków
word = input("Wprowadź jakieś słowo: ")

print("\nOto poszczególne litery Twojego słowa:")

print("Dlugosc wyrazu: ",len(word))
dlugosc=len(word)
for letter in ( dlugosc, dlugosc>=0, -1 ):
    print(letter)

input("\n\nAby zakończyć program,naciśnij klawisz Enter.")

 

 

komentarz 24 lutego 2018 przez Lisu Początkujący (270 p.)

Jeżeli chcesz użyć pętli, to musisz ją zmienić na np:

for letter in range( dlugosc, 0, -1 ):
    print(word[letter-1])

3 odpowiedzi

+6 głosów
odpowiedź 24 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
wybrane 24 lutego 2018 przez jasmen11
 
Najlepsza
word = "arbuz"
print(word[::-1])

W uzupełnieniu do bardziej skomplikowanych :-)

komentarz 24 lutego 2018 przez jasmen11 Nowicjusz (240 p.)
jezuuuuu, na prawdę? Tylko te dwie linijeczki ???
Ehhhhh

muszę jeszcze raz doczytać rozdział o pętli for.......

brrrr ale właśnie, tutaj nie użyłeś żadnej pętli?
komentarz 24 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
Użyłem wyrażenia zakresu czyli slice. Format prosty:

[begin:end:step]

Jeśli nie podasz danego elementu tylko część pustą,

begin == początek czyli indeks 0

end == koniec czyli indeks tuż za ostatnim elementem

step == co który element zwracać.

Pobaw się trochę tymi wartościami na dłuższym słowie a zrozumiesz jak to działa. Podstawiaj także wartości ujemne :-)
komentarz 11 marca 2018 przez jasmen11 Nowicjusz (240 p.)
czy to są tak zwany "krotki"?
komentarz 11 marca 2018 przez mokrowski Mędrzec (155,460 p.)
Nie. Krotki często nazywane rekordami to inaczej ang. tuple. Ja użyłem ang. slice czyli zakres lub wyrażenie zakresowe.
0 głosów
odpowiedź 24 lutego 2018 przez adrian17 Ekspert (344,860 p.)
edycja 24 lutego 2018 przez adrian17

dokładnie odwrotność jego (anagram)

(tak się składa że odwrotność jest anagramem, ale raczej nie ten termin miałeś na myśli)

for letter in ( dlugosc, dlugosc>=0, -1 ):

Um... zupełnie tak się tego nie robi w Pythonie. To wygląda, jakbyś próbował napisać pętlę w stylu C, której nie ma w Pythonie. Nie wiem co więcej powiedzieć. Radzę po prostu ponownie przeczytać rozdział o pętlach i indeksowaniu stringów, cokolwiek teraz czytasz.

komentarz 24 lutego 2018 przez Aisekai Nałogowiec (42,190 p.)
Odwrotność słowa (lub zdanie) to palindrom. Anagram to słowo (lub zdanie) które powstało w wyniku wykorzystania wszystkich liter/sylab innego słowa.
komentarz 24 lutego 2018 przez mokrowski Mędrzec (155,460 p.)
komentarz 24 lutego 2018 przez Aisekai Nałogowiec (42,190 p.)
nvm, teraz jak przeczytałem jeszcze raz post zrozumiałem co Pan Adrian miał na myśli. Zgadzam się, że palindrom jest anagramem.
0 głosów
odpowiedź 24 lutego 2018 przez Benek Szeryf (91,010 p.)

Źle stworzyłeś pętlę for:

rev = ""

for i in range(dlugosc-1, -1, -1):
    rev += word[i]

Ja jednak zrobił to jeszcze inaczej:

L = [letter for letter in word]
L.reverse()
rev = ''.join(L)

Ponieważ to rozwiązanie jest szybsze. Czasy, które otrzymałem:

Moje:  1.65 µs ± 2.89 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
Twoje: 1.34 µs ± 8.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

 

Podobne pytania

0 głosów
2 odpowiedzi 572 wizyt
pytanie zadane 10 lutego 2018 w Python przez ayo1001 Obywatel (1,890 p.)
0 głosów
1 odpowiedź 371 wizyt
pytanie zadane 14 września 2021 w Python przez Gowi Użytkownik (830 p.)
0 głosów
2 odpowiedzi 213 wizyt
pytanie zadane 7 października 2020 w Python przez Dawid Popławski Nowicjusz (160 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...