J'essaie d'écrire un programme qui lit 2 entiers positifs (m et n), puis j'imprime les n premiers entiers positifs de m en utilisant uniquement la boucle while.

Voici la question d'origine

Écrivez un programme en langage Python 3.x qui lit deux entiers positifs, m et n, et imprimez les n premiers entiers positifs qui sont des multiples de m.

Et la sortie du code devrait ressembler à:

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

J'ai donc fait jusqu'à présent:

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

Je veux comprendre comment réparer celui-ci et je me rends compte que l'utiliser pour ou si ça va être plus facile à faire

0
highentropy1915 17 mars 2019 à 12:14

2 réponses

Meilleure réponse

La réponse de Nullman est la bonne, de toute façon voici votre code corrigé, juste au cas où cela pourrait vous aider à mieux comprendre l'erreur:

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

Vous ne pouvez pas utiliser if, mais vous pouvez en effet utiliser 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
0
dzang 17 mars 2019 à 09:24

Ton problème est dans cette ligne

m = m * i

Vous mettez en cache une valeur intermédiaire, puis la multipliez à la prochaine itération, donc la première fois que vous multipliez votre m mais la prochaine itération, vous multipliez la valeur intermédiaire précédente au lieu de l'original m
vous pouvez modifier votre boucle ceci :

while i <= n:
    print(m * i)  #  you don't need to save the intermediate result, you can just print it
    i = i + 1
2
Nullman 17 mars 2019 à 09:19