Написание программы:
Кроме того, я нашел несколько других кодов в Интернете, но хочу работать только с этим кодом. Пожалуйста, сообщите мне об ошибке.
i = str(input())
for item in i:
print(item)
if int(i[item]) == int(i[-item]):
print('yes')
else:
print('no')
Здесь ожидается, что вы сообщите нам об ошибке.






Используйте фрагмент строки (i[::-1] перевернет строку):
i = input()
if i == i[::-1]:
print("Yes")
else:
print("No")
Это примет ввод от пользователя и сравнит его с тем же вводом в обратном порядке.
Привет! Пожалуйста, сделайте ваш код синтаксически корректным и объясните, что делает ваш код. Спасибо!
попробуй это:
word = "TOT"
i=word[::-1]
if i==word:
print("palandrom")
Хотя for item in i: перебирает каждый символ в строке, есть несколько проблем с вашей строкой кода if int(i[item]) == int(i[-item]):. Прежде всего, item будет символом из вашей строки. Итак, если пользователь набирает «привет», то i[item] сначала ищет i['h']. Поскольку «h» — это символ, а не число, это заставляет Python думать, что i — это словарь, а не строка, и, таким образом, говорит Python искать словарь с именем i и возвращать значение, где ключ — h. Это не сработает, так как i — это исходная строка, а не словарь.
Похоже, вы хотели здесь сравнить i[0] (первый символ в строке) с i[-1] (последний символ в строке), затем i[1] с i[-2] и так далее. Но даже если вы перебираете номера позиций, i[-item] математически не дает вам того, что вы хотите.
Еще одна проблема заключается в том, что вы проверяете каждый символ по одному и возвращаете «да» или «нет». В конечном итоге вы хотите получить один простой ответ: является ли ваша строка палиндромом или нет.
Кроме того, нет необходимости ставить str() рядом с input(), так как input все равно возвращает строку, даже если пользователь вводит только цифры. Кстати, несмотря на то, что вы используете i в качестве строковой переменной, обычное соглашение в программировании заключается в использовании i для обозначения какого-то целого числа, например, того, которое вы выполняете в цикле for. Но это пока нормально.
Как показали некоторые другие ответы, i[::-1] — это быстрый способ вернуть обратную сторону самой строки. Итак, если вы согласны с тем, что вы видите возврат вывода True, если строка является палиндромом, и False, если нет, то вот очень простой способ сделать это:
i = input()
print(i == i[::-1])
Если строка i идентична самой себе в перевернутом виде, то i == i[::-1] возвращает True. Если нет, возвращается False. Затем оператор print печатает любой ответ.
Однако, если вы действительно хотите пройти долгий путь, проверяя символ за символом в цикле, то вот один из способов сделать это. Вы можете создать функцию, которая принимает строку и выполняет работу:
def is_palindrome(mystring):
# The "//2" here divides by 2 and ignores the remainder. So if
# there are an even number of letters, we'll test each pair. If
# It's an odd number, then we don't care about the middle character
# anyway. Compare [0] to [-1], then [1] to [-2], [2] to [-3], and so on.
for position in range(0, len(mystring)//2):
# If we've found a mismatched pair of letters, then we can
# stop looking; we know it's not a palindrome.
if mystring[position] != mystring[(-1 * position) - 1]:
print("This is NOT a palindrome")
return # This breaks you out of the entire function.
# If we've gotten this far, then the word must be a palindrome.
print("This is a palindrome")
# Here's where we run the command to input the string, and run the function
mystring = input("Enter your string: ")
is_palindrome(mystring)
Большое спасибо! Отличное объяснение!
Пожалуйста! Пожалуйста, рассмотрите возможность выбора моего ответа в качестве окончательного «выбранного» ответа на ваш вопрос.
Привет! Пожалуйста, отформатируйте проблему и сделайте ее не домашним заданием. Спасибо!