Python编程初学者的困难

bus*_*ter 5 python variables return function list

我正在尝试用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())
Run Code Online (Sandbox Code Playgroud)

它给了我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())
Run Code Online (Sandbox Code Playgroud)

v是小于1的值列表,b具有整数值.如果v中的某些值大于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]它会卡住并且不会给我一个结果.

我不知道我做错了什么!

Lev*_*sky 17

您的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
Run Code Online (Sandbox Code Playgroud)

此外,对代码进行了几项优化:

def function(a, b):
    c = 0
    for x in a:
      if x > b:
         c += 1
    return c
Run Code Online (Sandbox Code Playgroud)

或进一步:

def function(a, b):
    return sum(x > b for x in a)
Run Code Online (Sandbox Code Playgroud)