2016-09-19 89 views
-3

我應該編寫一個程序,顯示數字從100到200,每行10個,可以被5或6整除,但不能同時爲兩個。這是我的代碼到目前爲止。我知道這是一個基本問題,所以你可以告訴我缺少的基本代碼,而不是「快捷方式」步驟。任何幫助表示讚賞!基本循環/ Python

def main(): 
     while (num >= 100) and (num <= 200): 
     for (num % 5 == 0) or (num % 6 == 0) 
     print (num) 

    main() 
+1

這有明確的語法錯誤,OP。例如'for'循環是錯誤的,並且沒有':'。(我猜這個縮進是由於複製/粘貼)。我建議你不要發佈一個甚至是無效的問題,而要看看那裏的許多Python教程之一。 –

回答

0

你應該使用初始化代碼中 雖然(條件),每個變量將在條件假突破。由於您的條件取決於num,但num在代碼中永遠不會更改,所以會出現無限循環。您需要在循環塊的末尾添加num = num + 1。 它應該使用,如果不是爲每個迭代器在這裏。你用於解決問題的條件是錯誤的。

應該是這樣的:

def main(): 
    num = 100 
    while (num >= 100) and (num <= 200): 
     if ((num % 5 == 0) or (num % 6 == 0)) and (num % 30 != 0): 
      print (num) 
     num = num + 1 
main() 
1

這是我會怎麼去做。如果你知道你需要的範圍,我會建議在while循環中使用for循環。你不太可能陷入無限循環。 n變量的原因是因爲你說你每行需要10個數字。 n變量將跟蹤您找到多少正確的數字,以便您知道何時有十個結果,並且可以使用自動包含換行符的正常打印語句。第二個打印語句不會添加換行符。

n = 0 
for i in range(100,201): 
    if (i%5 == 0 or i%6 == 0) and not (i%5 == 0 and i%6 == 0): 
     n += 1 
     if n%10 == 0: 
      print(i) 
     else:    
      print(str(i) + ", ", end="") 
+1

他爲什麼要這樣做?我並不質疑你的答案的有效性,而是我敦促你解釋它。 –