我试图用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]),它会卡住而不会给我结果。

我不知道我在做什么错!

最佳答案

您的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)

关于Python编程初学者的困难,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19576658/

10-09 16:38