2013-10-24 3 views
5

Я пытаюсь написать программу в Python, но я застрял в этой части коды: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 имеет целое число как значение. Если некоторые значения x в v больше 1/a, тогда значения x в r должны получить 1 больше, тогда он должен повторить a = a + 1, пока b не станет 0. Я хочу, чтобы эта функция давала результат типа ex , [7,6,5,4,3], где сумма элементов в этом списке равна b.
Иногда это дает мне правильное значение, иногда нет, и когда элементы в v равны, например, v = [0.33333,0.33333,0.33333], он застревает и не дает мне результата.

Я не знаю, что я делаю неправильно!

ответ

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) 
+0

Большое спасибо за ваш ответ! Это сработало ! Можете ли вы также взглянуть на вторую функцию и сказать мне, что не так? – buster

+0

@ user2884144 Возможно, вам нужно добавить некоторые вызовы 'print', чтобы понять, что происходит, но одна из возможных проблем заключается в том, что вы используете индекс' x-1', который на первом шаге цикла дает '-1', I.e. последний элемент, а не первый. Это может быть по дизайну, но я подумал, что на всякий случай указать на это. –

-2

возврата; только внутри весело в конце концов. и назовите переменную v

+1

Я не понимаю, что вы говорите, но спасибо за ответ в любом случае. – buster

+0

user2884144 Объявить переменную v как параметр в функции –

Смежные вопросы