【发布时间】:2020-08-25 22:47:18
【问题描述】:
此python代码的目的是将十进制数转换为二进制数。我知道我可以在代码中使用 int() 函数,但我无法确定代码中发生的过程。
def decimal_to_binary(n):
if(n > 1):
decimal_to_binary(n//2)
print(n % 2 , end='')
print(decimal_to_binary(18))
# The output for it is : 10010None
据说当程序进入if条件时,会先解释if里面的代码strong> 语句,那么它如何同时执行print(n % 2 , end='')。据我说,我认为这个print(n % 2 , end='') 只会打印一个值(0 或 1)。对我来说,似乎递归和 if 语句之后的 print 语句同时被解释。
其次,为什么 None 也打印输出?
【问题讨论】:
-
您可能想决定该函数是打印值还是返回值。如果返回字符串,则可以进行单元测试。并且在返回字符串后打印字符串非常容易(就像您自动完成的那样,即使您编写此函数的方式是错误的)。
-
None是decimal_to_binary(18)的返回值,它是没有return指定的函数的默认返回值。如果您不想打印它,请不要print()它,只需在代码末尾调用decimal_to_binary(18),此函数将打印它必须打印的内容。你的其余问题对我来说真的不清楚。无论如何:不能同时解释任何东西。如果您想了解发生了什么,请拿起铅笔和一张纸,然后按照程序进行操作。 -
Nitpick:
decimal_to_binary不会将十进制转换为二进制:它将 Pythonint转换为该int的二进制字符串表示形式。 Pythonints 以二进制形式存储,而不是十进制。 (当您执行decimal_to_binary(18)时,从十进制数字文字18到内部二进制格式的转换实际上发生在解析时,早在调用decimal_to_binary之前。) -
它不会转换任何东西 :)
-
@KennyOstrom:说得好。