代码适用于Windows,但不适用于Mac

时间:2016-09-19 14:24:42

标签: python windows macos python-3.x

所以我是编程的新手,最近我得到了一个创建程序,可以将二进制转换为十进制,反之亦然,以及十进制到十六进制,反之亦然。问题是,我不允许使用int()hex()bin()等可用功能。

我可能已经找到了从十进制转换为二进制的方法,并且我在朋友的笔记本电脑(在Windows上运行)上尝试了它并且它有效。但是当我尝试在我自己的笔记本电脑(MacBook)中执行它时,即使它是完全相同的代码也不会运行。这是代码:

def dectobin(x):
    temporary_result = ""
    while x > 0:
        result = str(x % 2) + temporary_result
        x = x // 2
    return result

而不是结果是二进制数,它只返回x % 2的值。有没有人知道为什么它在Mac上而不是在Windows上呢?如果是这样,我哪里出错了?我该如何解决?

2 个答案:

答案 0 :(得分:1)

temporary_result的值永远不会改变,但仍为""。因此result的值始终为最近处理的str(x % 2)值的x。鉴于当x变为零时循环终止,函数可能总是返回1

您确定这是您在Windows上执行的代码吗?你没有说你怎么知道“它甚至不会运行”,但你可能在两台不同的机器上使用不同的Python版本。

答案 1 :(得分:0)

为什么在循环中值永远不会改变时需要temporary_result?

def dectobin(x):
result = ""
while x > 0:
    result = str(x % 2) + result
    x = x // 2
return result