python 中的函数编码问题:基数 2 和 10 整数回文
Problem in coding with function in python: Base 2 & 10 integer palindrome
有一个问题要求编写代码,从用户那里获取连续的整数输入,直到输入一个负整数,并且对于每个输入,我应该评估它是否是以 10 和 2 为底的回文数。如果是然后打印 'Yes' 否则打印 'No'.
例如:99 = (1100011)base2,两个版本都是回文所以它打印 'Yes'
这是一个常用的初等方法。
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:编辑了缩进
您没有返回 b2_palindrome
中 palindrome
调用的值
见下文:
def b2_palindrome(n):
list1 = list(bin(n))
list1.pop(0)
list1.pop(0)
n = ''.join(list1)
return palindrome(n) # <-- added return here
有一个问题要求编写代码,从用户那里获取连续的整数输入,直到输入一个负整数,并且对于每个输入,我应该评估它是否是以 10 和 2 为底的回文数。如果是然后打印 'Yes' 否则打印 'No'.
例如:99 = (1100011)base2,两个版本都是回文所以它打印 'Yes'
这是一个常用的初等方法。
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:编辑了缩进
您没有返回 b2_palindrome
palindrome
调用的值
见下文:
def b2_palindrome(n):
list1 = list(bin(n))
list1.pop(0)
list1.pop(0)
n = ''.join(list1)
return palindrome(n) # <-- added return here