代码适用于Windows,但不适用于Mac
问题描述:
因此,我是编程新手,最近我得到了一个任务,可以将二进制转换为十进制,反之亦然,也可以将十进制转换为十六进制,反之亦然。问题是,我不允许使用可用功能,如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上?如果是这样,我哪里出错了?我如何解决它?
答
temporary_result
的值永不改变,但仍为""
。因此result
的值将始终为str(x % 2)
,最近处理的值为x
。假设当x
变为零时循环终止,则函数总是返回1
。
你确定这是你在Windows上执行的代码吗?你不会说你知道“它甚至不会运行”,但可能你在两台不同的机器上使用不同的Python版本。
答
为什么当循环中值永远不会改变时,您需要temporary_result?
def dectobin(x):
result = ""
while x > 0:
result = str(x % 2) + result
x = x // 2
return result
您确定您在两台计算机上使用的是相同版本的Python吗? –
我不明白这将如何在任何平台上工作。 –
它也不适用于任何版本的Python,因此两台计算机上的相同都无关紧要。 – martineau