【问题标题】:Problem in coding with function in python: Base 2 & 10 integer palindromepython中函数编码的问题:Base 2 & 10 integer palindrome
【发布时间】:2020-04-02 15:07:48
【问题描述】:

有一个问题要求编写代码,从用户获取连续整数输入,直到输入负整数,对于每个输入,我应该评估它是否是基数 10 和 2 的回文。如果是,则打印'Yes' 否则打印 'No'。

例如: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:编辑了缩进

【问题讨论】:

  • 请确保此处的缩进与您的实际代码中的缩进相同。

标签: python python-3.x function palindrome multiple-input


【解决方案1】:

你没有返回 palindromeb2_palindrome 中调用的值

见下文:

def b2_palindrome(n):
    list1 = list(bin(n))
    list1.pop(0)
    list1.pop(0)
    n = ''.join(list1)
    return palindrome(n)  # <-- added return here

【讨论】:

  • 感谢您抽出宝贵时间记录下我犯的一个愚蠢的错误。
  • 别担心,每个人都会犯愚蠢的错误!很高兴您重新开始营业。
猜你喜欢
  • 1970-01-01
  • 2017-12-11
  • 2014-12-28
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多