为什么这段代码没有按预期工作? Python

Why is this code not working as intended? Python

import string

decimal1 = 55
binary1 = 0

def convert(decimal1, binary1):
    binary1 = str(decimal1 % 2) + str(binary1)
    decimal1 = decimal1//2
    if decimal1 == 0:
        binary1 = str(binary1)
        return binary1
    convert(decimal1, binary1)
x = convert(decimal1, binary1)
print(x[-1])

我想要一个将十进制转换为二进制的代码,但函数输出没有被带入 x 或者程序是返回值 none。我想了解为什么会这样??

您的函数只有一个 return 语句,用于基本情况。对于递归情况,您也需要 return

递归完成后,在您的情况下,该值将被丢弃,因为没有 return。 Python 不像其他语言那样 return 最后一个表达式的值。如果没有 return 语句,则 return 为 None

我想如果你想返回结果,那么你不需要传递binary1变量。

import string

decimal1 = 55

def convert(decimal1):
    value = str(decimal1 % 2)
    decimal1 = decimal1//2
    if decimal1 == 0:
        return value
    else:
        return convert(decimal1) + value


x = convert(decimal1)
print(x)

要调试像这样的递归问题,可视化正在发生的事情会很有帮助。如果您 post 在此递归可视化工具中编写 OP 代码 here you can see the return value isnt bubbling up, as it does in the selected answer here