【问题标题】:How do you assign a value to a variable if no value is assigned, but, keep the value if one is assigned?如果没有分配值,如何为变量分配值,但是如果分配了值,则保留该值?
【发布时间】:2012-06-08 20:04:52
【问题描述】:

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

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

【问题讨论】:

    标签: python variables recursion python-2.7


    【解决方案1】:

    更好的方法是将“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)

    【讨论】:

    • 更好的是,将ab 参数设为默认值。 def my_sort(number, a=0, b=1): ...
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-08-31
        • 1970-01-01
        • 2022-01-25
        • 2021-12-09
        • 2019-02-16
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 2018-01-04
        相关资源
        最近更新 更多