【问题标题】:How do you print the output this [6,4,2,0] in a single row rather that sequence您如何在单行中打印输出 this [6,4,2,0] 而不是该序列
【发布时间】:2023-03-24 14:24:01
【问题描述】:

我正在使用以下手动方法,该方法恰好找到给定整数的二进制值的高位 =1。

例如:当我们输入 85 时,第 6 位、第 4 位、第 2 位和第 0 位为高,我依次得到输出为6 4 2 0。实际上我需要这样的输出:[6,4,2,0]。有人可以帮我吗?

def high_bit(num):
    for i in range(0,100):
        if (num/(pow(2,i)))==1: 
            print i
            num = (num - (pow(2,i)))
            y = high_bit(num)
            return y

【问题讨论】:

  • 在开始时声明一个空列表。将i 附加到列表而不是打印。返回列表。

标签: python


【解决方案1】:

我发现你的递归有点混乱,但它可以工作:

def high_bit(num, lst=None):
    if lst == None:
        toplevel = True
        lst = []
    else:
        toplevel = False
    for i in range(0,100):
        if (num/(pow(2,i)))==1: 
            lst.append(i)
            num = (num - (pow(2,i)))
            high_bit(num, lst)
    if toplevel:
        print lst

high_bit(85) # prints [6, 4, 2, 0]

不过,我建议以迭代方式进行。

【讨论】:

    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2021-10-16
    • 2021-10-07
    • 1970-01-01
    • 2022-06-15
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多