繁体   English   中英

该程序读取2个正整数,并仅使用“ while”打印其第一个倍数

[英]Program that reads 2 positive integer and print the first multiples of it only using “while”

我正在尝试编写一个程序,该程序读取2个正整数(m和n),然后仅使用while循环打印m的n个第一个正整数。

这是原始问题

用Python 3.x语言编写一个程序,该程序读取两个正整数m和n,并打印前n个正整数,该正整数是m的倍数。

代码的输出应如下所示:

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

我想了解如何解决此问题,并且我意识到使用for或如果这样做会更容易

你的问题在这一行

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM