Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2019 21:25:16

ToMaTkuH
Зарегистрирован: 2019-10-09
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Очень легкая задача "палиндром"

В задании сказано, что нужно проверить не является ли слово палиндромом, я накатал простенький код
print(“Проверим не палиндром, ли это”)
a = input(“Введите что-то: ”)
c = reversed(a)
if a == c:
print(“Это палиндром”)
else:
print(“Это не палиндром”)
print(a)
print( c )
Проблема в следующем когда я ввожу палиндром допустим топот, программа выдает мне что это не палиндром, я долго не мог понять почему исходя из логики в коде все верно.
Начал вертеть проблему и добавил в код print(a) и print © чтобы посмотреть а что реально выводит программа.
И понял, что проблема в том что после использования функции reversed, он мне возвращает вместо значения в перевернутом виде, место где он его сохранил.
Примерно так ——-
Проверим не палиндром, ли это
Введите что-то: топот
Это не палиндром
топот
<reversed object at 0x0086FCD0>
Вопрос к знатокам помогите вообще отдуплить как в подобных ситуациях разрешить проблему, то есть
сменить возвращение места в памяти на реальное перевернутое значение.
Я понимаю что это программу можно написать по другому, но вопрос сейчас в том , что я часто сталкиваюсь с этой проблемой и не знаю как ее решить. И не понимаю а можно ли ее вообще решить.
И что самое главное я не понимаю, а правильно ли я вообще осознал проблему.
С ув. начинающий питонист Томат.

Отредактировано ToMaTkuH (Окт. 9, 2019 21:26:36)

Офлайн

#2 Окт. 9, 2019 22:26:57

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Очень легкая задача "палиндром"

немного понять что строки неизменяемы а reversed() возвращает обратный итератор по указанной последовательности

 >>> a = 'Введите'
>>> for i in reversed(a):
	print(i,end = '')
етидевВ
>>>
лучше сами прочитайте Обзор трех основных способов перевернуть строку Python

Отредактировано marvellik (Окт. 9, 2019 22:28:30)

Офлайн

#3 Окт. 9, 2019 22:37:47

ToMaTkuH
Зарегистрирован: 2019-10-09
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Очень легкая задача "палиндром"

marvellik
немного понять что строки не изминяемы а reversed() возвращает обратный итератор по указанной последовательности

Класс, спасибо, пролистал бегло, то что нужно!
Теперь понятно reversed пишет мой текст (топот) и даже не пишет а просто отображает как я понял!
т
о
п
о
т
Сейчас в общем буду вчитываться и решать проблему.
Еще раз огромное спасибо! очень помогли!

Офлайн

#4 Окт. 10, 2019 10:06:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Очень легкая задача "палиндром"

  
>>> s = 'text'
>>> s == s[::-1]
False
>>> s = 'wow'
>>> s == s[::-1]
True
>>>

А по твоей проблеме - reversed() возвращает не строку, а объект, итерируемый по символам в обратном порядке.
  
>>> s = 'wow'
>>> reversed(s)
<reversed object at 0x7f59ebd844e0>
>>> list(reversed(s))
['w', 'o', 'w']
>>> ''.join(reversed(s))
'wow'
>>>



Отредактировано py.user.next (Окт. 10, 2019 10:06:49)

Офлайн

#5 Окт. 10, 2019 11:42:21

ToMaTkuH
Зарегистрирован: 2019-10-09
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Очень легкая задача "палиндром"

py.user.next
Спасибо,большое, да я вчера вчитался в статью - понял свои ошибки.
Но за то теперь я знаю три способа перевернуть слово)!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version