【问题标题】:Python programming beginner difficultiesPython编程初学者的困难
【发布时间】:2013-11-03 19:02:44
【问题描述】:

我正在尝试用 Python 编写一个程序,但我被困在这段代码中:

def function():
    a=[3,4,5,2,4]
    b=1
    c=0
    for x in range(5):  
        if a[x-1]>b:
            c=c+1
        return c


print(function())

它给我的值是 1 而不是 5。实际上我要编写的函数有点复杂,但问题实际上是一样的,它没有给我正确的结果。

def result():
    r=[0]*len(y)
    a=2
    b=an_integer
    while b>0:
         for x in range(len(y)) :
             if y[x-1] > 1/a and b>0:
                r[x-1]=r[x-1]+1
                b=b-1
                a=a+1

    return r

    print(result())

v 是小于 1 的值的列表,b 有一个整数作为值。如果 v 中的某些值 x 大于 1/a,则 r 中的值 x 应该变大 1,然后它应该重复 a=a+1 直到 b 变为 0。我希望这个函数给出 ex 类型的结果. [7,6,5,4,3] 其中此列表中的元素之和等于 b。
有时它给了我正确的值,有时没有,当 v 中的元素相等时,例如 v=[0.33333,0.33333,0.33333] 它会卡住并且没有给我结果。

我不知道我做错了什么!

【问题讨论】:

    标签: python list function variables return


    【解决方案1】:

    您的return 语句缩进不正确。您希望循环结束后返回,而不是循环内返回。

    def function():
        a = [3, 4, 5, 2, 4]
        b = 1
        c = 0
        for x in range(5):  
            if a[x-1] > b:
                c = c + 1
        return c
    

    另外,对代码进行了一些优化:

    def function(a, b):
        c = 0
        for x in a:
          if x > b:
             c += 1
        return c
    

    或进一步:

    def function(a, b):
        return sum(x > b for x in a)
    

    【讨论】:

    • 非常感谢您的回答!有效 !能否请您看一下第二个函数并告诉我有什么问题?
    • @user2884144 您可能需要添加一些print 调用来了解发生了什么,但一个可能的问题是您使用x-1 的索引,在循环的第一步给出@ 987654327@,即最后一个元素而不是第一个元素。这可能是设计使然,但我想我会指出以防万一。
    【解决方案2】:

    返回;只有里面的乐趣到底呢。 并将变量命名为 v

    【讨论】:

    • 我不明白你在说什么,但还是谢谢你的回答。
    • user2884144 将变量v声明为函数中的参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2015-07-30
    相关资源
    最近更新 更多