我正在尝试用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中的某些值大于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]它会卡住并且不会给我一个结果。
我不知道我做错了什么!
答案 0 :(得分: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
此外,对代码进行了一些优化:
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)
答案 1 :(得分:-2)
返回;只有里面的乐趣到底呢。 并命名变量v