该程序的代码应该将基数为10的数字带到指定的基数,并返回一个字符串,该字符串对应于指定基数中表示的数字的数字,每个数字之间有一个空格。到目前为止一切工作都很完美,但我现在遇到的问题是每个值都在列表中被替换,而不是实际将它们逐个添加到列表中。这是我目前的代码。这些打印件是我暂时跟踪输出的。谢谢你的帮助
def convert(num, base):
results = ''
if num < base:
results.append(num)
print(results)
else:
results.append(num % base)
print(results)
return convert(num // base, base)
def main():
num, base = input("Enter a number and a base, seperated by a comma: ")
num, base = int(num), int(base)
convert(num, base)
if __name__ == '__main__':
main()
当前输出:
9
6
7
期望的输出:
9 6 7
答案 0 :(得分:0)
results
是一个局部变量,每次调用''
函数时都会重新初始化为convert
。更改方法签名以接受可选的results
参数以防止这种情况发生:
def convert(num, base, results=''): # Notice the optional argument
if num < base:
results = results + " " + str(num)
print(results)
else:
results = results + " " + str(num % base)
print(results)
return convert(num // base, base, results) # Notice how we pass the existing result variable
作为旁注,字符串(例如results
)没有append
方法,要么使用+
将其更改为字符串连接,请使用.format()
语句,或者将results
变量的类型改为列表。