Ответ 1
if num % 2 == 0:
pass # Even
else:
pass # Odd
Знак %
подобен делению только для проверки остатка, поэтому, если число, деленное на 2
, имеет остаток от 0
, оно даже в противном случае нечетно.
Я пытаюсь создать программу, которая проверяет, является ли слово палиндром, и я дошел до него, и он работает со словами, имеющими четное количество чисел. Я знаю, как заставить его что-то делать, если количество букв нечетное, но я просто не знаю, как узнать, является ли число нечетным. Есть ли простой способ найти, является ли число нечетным или даже?
Просто для справки, это мой код:
a = 0
while a == 0:
print("\n \n" * 100)
print("Please enter a word to check if it is a palindrome: ")
word = input("?: ")
wordLength = int(len(word))
finalWordLength = int(wordLength / 2)
firstHalf = word[:finalWordLength]
secondHalf = word[finalWordLength + 1:]
secondHalf = secondHalf[::-1]
print(firstHalf)
print(secondHalf)
if firstHalf == secondHalf:
print("This is a palindrom")
else:
print("This is not a palindrom")
print("Press enter to restart")
input()
Спасибо
if num % 2 == 0:
pass # Even
else:
pass # Odd
Знак %
подобен делению только для проверки остатка, поэтому, если число, деленное на 2
, имеет остаток от 0
, оно даже в противном случае нечетно.
Аналогично другим языкам, самая быстрая операция "по модулю 2" (нечетная/четная) выполняется с помощью оператора bitwise and
:
if x & 1:
return 'odd'
else:
return 'even'
Не имеет значения, имеет ли слово четное или нечетное количество букв:
def is_palindrome(word):
if word == word[::-1]:
return True
else:
return False
Используйте оператор modulo:
if wordLength % 2 == 0:
print "wordLength is even"
else:
print "wordLength is odd"
Для вашей проблемы самым простым является проверка того, соответствует ли слово его брату с обратным знаком. Вы можете сделать это с помощью word[::-1]
, которые создадут список из word
, взяв каждый символ от конца до начала:
def is_palindrome(word):
return word == word[::-1]
Один из самых простых способов - использовать оператор модуля модуля%. Если n% 2 == 0, то ваш номер четный.
Надеюсь, что это поможет,
Средняя буква слова нечетной длины не имеет значения при определении того, является ли слово палиндром. Просто проигнорируйте это.
Подсказка: все, что вам нужно, - это небольшая подстройка к следующей строке, чтобы сделать эту работу для всех длин слов:
secondHalf = word[finalWordLength + 1:]
P.S. Если вы настаиваете на обработке двух случаев отдельно, if len(word) % 2: ...
сообщит вам, что слово имеет нечетное число символов.