2016-09-19 203 views
0

因此,我是编程新手,最近我得到了一个任务,可以将二进制转换为十进制,反之亦然,也可以将十进制转换为十六进制,反之亦然。问题是,我不允许使用可用功能,如int()hex()bin()代码适用于Windows,但不适用于Mac

我可能已经找到了一种方法来完成从十进制到二进制的转换,并且我在我的朋友的笔记本电脑上(它运行在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

您确定您在两台计算机上使用的是相同版本的Python吗? –

+2

我不明白这将如何在任何平台上工作。 –

+0

它也不适用于任何版本的Python,因此两台计算机上的相同都无关紧要。 – martineau

回答

1

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

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

0

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

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