#python
#python
Вопрос:
Создайте программу, которая умножает все числа от 1,2,3 … и заканчивается, когда произведение превышает 1000.
Я пробовал этот код, но он не работает.
produkt = 1
while produkt<1000:
print(produkt)
produkt = produkt*(produkt 1)
if produkt < 1000:
break
Комментарии:
1. «больше 1000», тогда почему вы нарушаете when
< 1000
?2. Используйте разные переменные для результата и текущей итерации цикла. И удалите
break
.3. это должно работать даже без
if ... :break
— в конечном итоге вам понадобитсяwhile ... <= 1000:
, но если вам нужноbreak
вкл, тогда вам нужноif ...> 1000
вместоif ... < 1000
потому чтоgreater
означает>
Ответ №1:
Я думаю, вы хотите:
number = 1
produkt = number
while produkt<=1000:
print(produkt)
number = 1
produkt = produkt * number
Результат:
1
2
6
24
120
720
Ответ №2:
produkt = 1
counter = 2
while produkt < 1000:
print(produkt, end=" ")
produkt = produkt * counter
counter = 1
print(produkt)
1 2 6 24 120 720 5040
Комментарии:
1. Добро пожаловать в Stack Overflow. Ответы только для кода не рекомендуются при переполнении стека, потому что они не объясняют, как это решает проблему. Пожалуйста, отредактируйте свой ответ, чтобы объяснить, что делает этот код и как он отвечает на вопрос, чтобы он был полезен для OP, а также для других пользователей с аналогичными проблемами.
Ответ №3:
Вам нужны 2 переменные, одна для хранения total
и одна для хранения index
(1, 2, 3, …)
index = 1
total = 1
while index < 1000:
total *= index # same as: total = total * index
index = 1 # same as: index = index 1
# print(f'{index - 1} => {total}') uncomment if you want to follow the values
print(f"Stop at total {total}, index was {index}")
Вы получите следующее
1 => 1
2 => 2
3 => 6
4 => 24
5 => 120
6 => 720
7 => 5040
8 => 40320
9 => 362880
10 => 3628800
...
Stop at total 402...000, index was 1000
Комментарии:
1. Я бы переименовал переменные, пока вы этим занимаетесь.
produkt
на самом деле это больше не продукт.
Ответ №4:
Вы можете изменить свой код следующим образом: переменная produkt
принимает значения 1,2,3, … и их продукт хранится в produkt_end
.
produkt = 1
produkt_end = 1
while True:
print(produkt_end)
produkt_end = produkt_end*produkt
produkt = produkt 1
if produkt_end > 1000:
break
Это покажет produkt_end
:
1
1
2
6
24
120
720
Ответ №5:
Просто для удовольствия.
>>> next(filter(1000 .__lt__, itertools.accumulate(itertools.count(1), operator.mul)))
5040