簡體   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