如果没有赋值,如何为变量赋值,但是,如果分配了值,则保留该值?

时间:2012-06-08 20:04:53

标签: python variables recursion python-2.7

我目前正在定义一个递归函数。它的目标是从最低到最高排序。当它开始时我希望A等于0但我希望每次循环时该值增加1。这可能吗?这是迄今为止的功能。

def my_sort(number):
    if a is None:
        a=0
        b=1
    separated = number.split(',')
    if separated[a]<= separated[b]:
        while separated[0]<=separated[1]:
            a = a+1
            b = b+1
            my_sort(number)
        while separated[0]>separated[1]:
            my_sort(number)

    else:
        new=0
        separated[a] = new
        separated[a].replace(separated[a],separated[b])
        separated[b].replace(separated[b],new)


user_input= input("values to sort")
user_input= my_sort(user_input)
print user_input

3 个答案:

答案 0 :(得分:3)

更好的方法是将'a'和'b'作为参数传递给my_sort()。然后,您的初始调用为my_sort(user_input, 0, 1),您的递归调用为my_sort(number, a+1, b+1)

如果你不喜欢将'a'和'b'传递给my_sort(),那么定义使用'a'和'b'作为参数的my_sort_helper()并将my_sort实现为my_short_helper (input, 0, 1) < / p>

答案 1 :(得分:2)

回答你的问题只是:a = a or 0

答案 2 :(得分:1)

基于@ GoZoner的方法,我建议将numbers字符串预分割成一个列表并将其传递给my_sort函数而不是原始字符串。这样,对于递归,您可以使用参数切片调用它,如nums[2:]中所示。

此外,由于b始终等于a + 1,因此您不需要它。

最后建议:不要将排序结果分配给user_input。一旦你改变它,它应该被称为其他东西。