为什么这段代码没有按预期工作? 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。
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。