Как мне закодировать это использование в цикле while и Python

#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