Пожалуйста помоги. Я пытаюсь написать цикл, который будет принимать значения из списка mylist = [3,4,7,10,6,8] и продолжать добавлять их, пока сумма не превышает 24. myvar = 0 mylist = [3 , 4,7,10,6,8], а ...

1
as134_user3693277 15 Фев 2021 в 23:51

6 ответов

Лучший ответ

Вот что вы ищете:

mylist = [3,4,7,10,6,8]
sum = 0

for var in mylist:
    if sum + var > 24:
        break
    sum += var

print(sum)

Также рассмотрите возможность использования модуля numpy для численных расчетов.

0
Peter Rüthemann 15 Фев 2021 в 20:58

Проблема, с которой вы столкнулись, заключается в том, что проверка myvar <= 24 происходит только тогда, когда код попадает в эту строку. В вашем случае он проверяет его один раз в первый раз, видит, что это 0, затем переходит к for i in mylist, после чего выполняет итерацию по списку, выполняя myvar+=i для каждого элемент. Поскольку мы не вернулись к проверке myvar <= 24 до тех пор, пока все элементы в mylist не были добавлены, она не останавливает выполнение, пока все значения mylist не будут добавлены в { {X7}} один раз, и код вернется к вашему тесту myvar <= 24. Вместо этого вы можете попробовать что-то более похожее на

myvar = 0
mylist = [3,4,7,10,6,8]

for i in mylist:
  if myvar + i <= 24:
      myvar += i
  else:
      break

У этого есть два преимущества: во-первых, он не продолжает добавлять элементы после нажатия 24, а также то, что он проверяет, что добавление нового значения не превышает 24.

Есть несколько способов добиться желаемого, и это только один. Наверное, есть более красивые способы, но я думаю, что это самый легкий для понимания новичок.

2
Chance 15 Фев 2021 в 20:58

Ваш цикл for уже складывает их все, так что вы слишком много зацикливаете! Для этого есть разные решения:

myvar = 0
mylist = [3,4,7,10,6,8]

for i in mylist:
  myvar+=i
  if myvar > 24:
    myvar-=i
    break
print(myvar)
1
straeter 15 Фев 2021 в 21:03

Следует использовать только одну петлю. Таким образом, внутренний цикл каждый раз добавляет весь список, потому что условие <=24 проверяется только во внешнем цикле.

Вы можете использовать цикл for и внутренне проверять результат.

myvar = 0
mylist = [3,4,7,10,6,8]

for i in mylist:
    if myvar <= 24:
        myvar += i
    else:
        break

Условие прерывания является необязательным, но останавливает цикл после достижения общей суммы. Если сумма значений в списке меньше 24, вместо этого будет возвращена сумма списка.

Примечание: не проверяется, все ли элементы в списке являются числами.

0
Maura Pintor 15 Фев 2021 в 21:01

Вы хотите взять значения из своего списка и добавить их в переменную, если они не превышают 24.

myvar = 0
mylist = [3,4,7,10,6,8]

print(myvar)
for i in range(len(mylist)):
    if myvar + mylist[i] <= 24:
        myvar += mylist[i]
        print(myvar)
    else:
        break

И результат: функция печати покажет 0, затем 3 7 14 24 окончательное значение myval - 24

0
bara-elba 15 Фев 2021 в 21:38

Добавьте значения вашего списка в переменную, если он не превышает 24, если вы хотите использовать цикл while, вы можете попробовать это:

myvar = 0
mylist = [3,4,7,10,6,8]

print(myvar)
i = 0
while myvar <= 24:
    if myvar + mylist[i] <= 24:
        enter code heremyvar += mylist[i]
        print(myvar)
    else:
        break
    i+=1
0
bara-elba 15 Фев 2021 в 21:52
66215235