Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2021, 22:32   #1
Bmkdesone
Новичок
Джуниор
 
Регистрация: 03.11.2021
Сообщений: 2
По умолчанию Как заставить цикл while с условием выполнить действие для каждого элемента списка

Добрый день. Только начинаю изучать Python. Требуется помощь по решению следующей задачи:
На входе имеется список элементов. Для каждого элемента списка необходимо получить сумму с самим собой, до тех пор пока число не будет меньше или равно 1. Пример: есть число 0,3, необходимо получить список - 0, 0.3, 0.6, 0.9. На выходе программы необходимо получить список с вложенными списками значений для каждого элемента в списке.
Я смог додуматься только до следующего:
Код:
 
percent = [0.5, 0.4, 0.3, 0.2, 0.1]
addedPercent = 0
uvList =[]
for i in range(len(percent)):
	value = []
	while addedPercent <= 1:
		value.append(addedPercent)
		addedPercent += percent[i]
	uvList.append(value)
print (uvList)
При данном коде программа выполняет действие только для первого элемента в списке, при достижении условия, программа прерывается. Как заставить программу пройтись по каждому элементу списка?
Bmkdesone вне форума Ответить с цитированием
Старый 03.11.2021, 23:14   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Нужно занулять addedPercent внутри for, перед while. А ещё можно:
Код:
for i in percent:
    # тут использовать i
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.11.2021, 09:48   #3
Bmkdesone
Новичок
Джуниор
 
Регистрация: 03.11.2021
Сообщений: 2
По умолчанию

Да уж, вот это я тупанул… Спасибо тебе большое!
Почему на выходе получаются вот такие числа (выделил жирным):
[[0, 0.5, 1.0], [0, 0.4, 0.8], [0, 0.3, 0.6, 0.8999999999999999], [0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0], [0, 0.1, 0.2, 0.30000000000000004, 0.4, 0.5, 0.6, 0.7, 0.7999999999999999, 0.8999999999999999, 0.9999999999999999]]
Bmkdesone вне форума Ответить с цитированием
Старый 04.11.2021, 12:28   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,381
По умолчанию

А вы почитайте о представлении вещественного числа в ЭВМ.
Оказывается, что не все числа представимы точно.
При выводе используйте форматирование.

PS: Способы хранения данных в ЭВМ различны: см. типы данных.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
После каждого элемента списка добавьте ту часть списка, которая была перед ним - Pascal ABC Panchess Паскаль, Turbo Pascal, PascalABC.NET 6 10.04.2017 11:12
удаление элемента из списка с условием[c++] luibrain Помощь студентам 4 06.05.2016 16:09
Для каждого элемента, выделенного из строки считываем как число и округляем Nastya15684 Общие вопросы C/C++ 1 25.10.2015 12:30
Как выполнить действие только один раз? dolphin705 Общие вопросы Delphi 5 25.08.2009 09:33
Дескрипторы потоков - Для каждого элемента списка необходимо создать поток, выполняющий требуемые функции kdv0403 Общие вопросы Delphi 2 09.06.2007 11:12