【问题标题】:Code works in Windows, but not on Mac代码适用于 Windows,但不适用于 Mac
【发布时间】:2016-09-19 23:01:28
【问题描述】:

所以我是编程新手,最近我接到了一个任务,要创建一个程序,可以将二进制转换为十进制,反之亦然,十进制转换为十六进制,反之亦然。问题是,我不允许使用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 上这样做?如果是这样,我哪里出错了?我该如何解决?

【问题讨论】:

  • 您确定在两台计算机上使用相同版本的 Python 吗?
  • 我看不出这将如何在任何平台上运行。
  • 它也不适用于任何版本的 Python,因此在两台计算机上是否相同并不重要。

标签: python windows macos python-3.x


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    当循环中的值从不改变时,为什么需要temporary_result?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      相关资源
      最近更新 更多