Программа, которая читает 2 положительных целых числа и печатает первые кратные только с использованием while. - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь написать программу, которая читает 2 положительных целых числа (m и n), а затем печатает n первых положительных целых чисел m, используя только цикл while.

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

Напишите программу на языке Python 3.x, которая читает два натуральных числа, m и n, и печатает первые n натуральных чисел, которые кратные м.

И вывод кода должен выглядеть так:

Type a positive integer for m: 9 
Type a positive integer for n: 5 
The first 5 positive integers multiples of 9 are:
9
18
27
36
45

Итак, я уже сделал:

m = int(input("Type a integer for m: "))
n = int(input("Type a integer for n: "))
i = 1
print()
print("The first ",n,"positive integers multiples of ", m," are:")
while i <= n:
    m = m * i
    print(m)
    i = i + 1

Я хочу понять, как это исправить, и я понимаю, что использовать для или, если это будет легче сделать

Ответы [ 2 ]

2 голосов
/ 17 марта 2019

ваша проблема в этой строке

m = m * i

вы кешируете промежуточное значение и затем умножаете его на следующей итерации, так что в первый раз вы умножаете m, но на следующей итерации выумножая предыдущее промежуточное значение вместо исходного m
, вы можете изменить свой цикл следующим образом:

while i <= n:
    print(m * i)  #  you don't need to save the intermediate result, you can just print it
    i = i + 1
0 голосов
/ 17 марта 2019

Ответ Nullman является правильным, в любом случае, здесь ваш код исправлен, на случай, если он поможет вам лучше понять ошибку:

m = 9
n = 5
i = 1
print()
print("The first ",n,"positive integers multiples of ", m," are:")
while i <= n:
    multiple = m * i
    print(multiple)
    i = i + 1

Вы не можете использовать if, но вы действительно можете использоватьfor:

m = 9
n = 5
i = 1
print()
print("The first ",n,"positive integers multiples of ", m," are:")
for i in range(1, n + 1):
    multiple = m * i
    print(multiple)
    i = i + 1
...