Возник вопрос, в котором предлагалось написать код для получения непрерывного целочисленного ввода от пользователя до тех пор, пока не будет введено отрицательное целое число, и для каждого ввода я должен оценить, является ли он палиндромом как в основаниях 10, так и в 2. Если да, выведите «Да», иначе выведите «Нет».
Например: 99 = (1100011) base2, обе версии имеют палиндром, поэтому он печатает «Да»
Это обычный элементарный метод.
while 1:
num = int(input('Input: '))
if num > 0:
num1 = str(num)
if num1 == num1[::-1]:
list1 = list(bin(num))
list1.pop(0)
list1.pop(0)
n = ''.join(list1)
if n == n[::-1]:
print('Yes')
else:
print('No')
else:
print('No')
else:
break
Но когда я попытался набрать код, используя определение новой функции, это не сработало. Вот следующий код. Можете ли вы заметить, что с этим не так.
def palindrome(n):
n = str(n)
if n == n[::-1]:
return True
else:
return False
def b2_palindrome(n):
list1 = list(bin(n))
list1.pop(0)
list1.pop(0)
n = ''.join(list1)
palindrome(n)
while 1:
num = int(input('Input: '))
if num > 0:
if b2_palindrome(num) and palindrome(num):
print('Yes')
else:
print('No')
else:
break
@ dspencer: отредактировал отступы