Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据表示_Python_Representation - Fatal编程技术网

Python 数据表示

Python 数据表示,python,representation,Python,Representation,我们可以使用以下算法在Python中实现正整数的十进制到二进制转换,该算法将整数n作为输入,并返回包含二进制表示形式n的1和0的字符串 编写一个函数int_to_bin_string(n)(在int_to_bin_string.py中),它接受一个非负整数n并返回由1和0组成的字符串 我们不允许使用任何内置的python函数将数字转换为字符串,反之亦然 def int_to_bin_string(n): if n == 0: return "0"

我们可以使用以下算法在Python中实现正整数的十进制到二进制转换,该算法将整数n作为输入,并返回包含二进制表示形式n的1和0的字符串

编写一个函数int_to_bin_string(n)(在int_to_bin_string.py中),它接受一个非负整数n并返回由1和0组成的字符串

我们不允许使用任何内置的python函数将数字转换为字符串,反之亦然

    def int_to_bin_string(n):
        if n == 0:
            return "0"
        s = ''
        while n > 0:
            if n % 2 == 0:
                ch = "0"
            else:
                ch = "1"
            s = s + ch
            n = n/2
        return s
这就是我尝试过的。当我尝试int-to-bin-string(255)时,得到的是“1”,而不是“11111”


它现在可以工作了对于倒数第二行,您需要

n = n/2 

对于第二行到最后一行,您需要

n = n/2 

你有一个过早的回报。它需要在while循环之外,这就是为什么您只能获得一个字符。也应该是n=n/2


另外,看看您的第一个return语句,它返回的是一个整数而不是字符串。

您的return s中有一个过早的返回。它需要在while循环之外,这就是为什么您只能获得一个字符。也应该是n=n/2


另外,看看您的第一个return语句,它返回一个整数而不是字符串。

您可以使用python的键函数

bin( value ) # returns a string like '0b110110'
如果你只想要数字,只需要一个切片。。。
bin(value)[2://code>

您可以使用python的一个关键函数

bin( value ) # returns a string like '0b110110'
如果你只想要数字,只需要一个切片。。。
bin(value)[2://code>

这可能是您的另一种选择。。。但几乎是一样的

def int_to_bin_string(n):
    s = ''
    while n:        
        s = ((n & 1) and "1" or "0") + s
        n >>= 1
    return s or "0"

我希望这会有所帮助;)

这可能是你的另一种选择。。。但几乎是一样的

def int_to_bin_string(n):
    s = ''
    while n:        
        s = ((n & 1) and "1" or "0") + s
        n >>= 1
    return s or "0"

我希望这会有所帮助;)

根据症状,我敢打赌这是Python3与Python2的较量。修改后的代码在Python2上运行良好

您可以通过简单的修改使这段代码双语。将除法器替换为2档。使用
n=n>>1
代替
n=n/2
。这对P2和P3都有效

def int_to_bin_string(num):
    n = int(num) # added to force int type on entry
    if n == 0:
        return "0"
    s = ''
    while n > 0:
        if n % 2 == 0:
            ch = "0"
        else:
            ch = "1"
        s = s + ch
        n = n >> 1 # was n/2
    return s

我还添加了一个小过滤器来强制参数在条目上为int,并使用重命名来避免丢失原始参数值。调试时,我希望看到原始值——因此重命名。我只是做反射;这与你的问题无关。

我敢打赌,从症状来看,这是Python 3与Python 2的问题。修改后的代码在Python2上运行良好

您可以通过简单的修改使这段代码双语。将除法器替换为2档。使用
n=n>>1
代替
n=n/2
。这对P2和P3都有效

def int_to_bin_string(num):
    n = int(num) # added to force int type on entry
    if n == 0:
        return "0"
    s = ''
    while n > 0:
        if n % 2 == 0:
            ch = "0"
        else:
            ch = "1"
        s = s + ch
        n = n >> 1 # was n/2
    return s


我还添加了一个小过滤器来强制参数在条目上为int,并使用重命名来避免丢失原始参数值。调试时,我希望看到原始值——因此重命名。我只是做反射;这与你的问题无关。

还将
返回设置在循环之外。还将
返回设置在循环之外。我将n/2改为n=n/2,这是一个疏忽。它仍然只给我“1”这个蟒蛇是3吗?如果是这样的话,你可能想要
n=n//2
如果你得到的是“chchchchchch”,你可能是
s=s+“ch”
而不是
s=s+ch
。当我取出单引号时,我发现一个语法错误:无法分配到literal相当确定你没有运行你发布的代码。我将n/2改为n=n/2,这是一个疏忽。它仍然只给我“1”这个蟒蛇是3吗?如果是这样,您可能想要
n=n//2
如果您得到的是“chchchchch”,那么您可能想要
s=s+“ch”
而不是
s=s+ch
。当我取出单引号说:无法分配给literal时,我得到了一个语法错误。我很确定您没有运行发布在此处的代码。我们不允许使用内置python函数。这有点违背了自己编写代码的目的。另外,问题说明您不能使用内置函数来完成此操作。对不起。。。事实上,有些人在不知道他们使用的语言能力的情况下发布了这样的问题。好吧,那么我就参考其他答案。。。n=n/2并返回到loop之外,我修正了这一点,但现在它返回了一堆“chchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchch。另外,问题说明您不能使用内置函数来完成此操作。对不起。。。事实上,有些人在不知道他们使用的语言能力的情况下发布了这样的问题。好吧,那么我就参考其他答案。。。n=n/2并返回loopI修复了这一点,但现在它返回一堆“chchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchchch当您没有添加附加报价时:/