Python hw赋值String正在替换值,而不是连续地将它们添加到字符串中

时间:2016-03-17 01:37:25

标签: python

该程序的代码应该将基数为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

1 个答案:

答案 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变量的类型改为列表。