Я пытаюсь написать программу в 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], он застревает и не дает мне результата.
Я не знаю, что я делаю неправильно!
Большое спасибо за ваш ответ! Это сработало ! Можете ли вы также взглянуть на вторую функцию и сказать мне, что не так? – buster
@ user2884144 Возможно, вам нужно добавить некоторые вызовы 'print', чтобы понять, что происходит, но одна из возможных проблем заключается в том, что вы используете индекс' x-1', который на первом шаге цикла дает '-1', I.e. последний элемент, а не первый. Это может быть по дизайну, но я подумал, что на всякий случай указать на это. –