2016-09-19 88 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

他为什么要这样做?我并不质疑你的答案的有效性,而是我敦促你解释它。 –