【问题标题】:I have some problem with my homework. It's about stop the loops我的作业有问题。这是关于停止循环
【发布时间】:2019-09-09 18:13:08
【问题描述】:

我正在做作业。而且我不知道如何解决这个问题。

我尝试在 for 语句下使用 break 但没有返回。 问题是“完成以下程序,以便循环在找到大于 1000 且可被 33 和 273 整除的最小正整数时停止。”

这是我尝试过的代码

n = 1001 #This one is required

while True: #This one too
    for i in range(n,___): # I don't know what should i put in the blank
          if i%33 == 0 and i%273 == 0: # I really confused about this line
              break # Should i break it now?, or in the other lines?
print(f"The value of n is {n}") #This one is also required

我不知道我应该在哪几行添加中断(或者我不必使用它?)或者我应该创建一个调用列表最小数量的函数?

我很抱歉我的语言以及我的编程技能有多愚蠢 我会接受每一条评论。谢谢

【问题讨论】:

  • 不是您的主要问题,但可能很重要:您的问题陈述将273 作为数字之一,但在您的代码中您有237
  • 哦,是的!我忘记换号码了!谢谢你提醒我!

标签: python for-loop while-loop break


【解决方案1】:

你已经有一个while True: 循环,你不需要内部的for 循环来搜索你的号码,只需在while 循环中不断增加n 而不是添加一个新的计数器,当找到您要查找的数字,无限的while True: 循环将停止(使用break),因此您的打印语句将被执行:

n = 1001  #  start at 1001

while True:  #  start infinite loop
    if n % 33 == 0 and n % 273 == 0:  #  if `n` found
        break  #  exit the loop
    n += 1  #  else, increment `n` and repeat

print(f"The value of n is {n}")  #  done, print the result

输出:

The value of n is 3003

【讨论】:

  • 非常感谢!现在我明白它是如何工作的了。谢谢!
【解决方案2】:

谢谢你说这是作业!比起仅仅给出答案,更详细地解释事情会更好。

有几件事需要解释:

1) n%33 是 n 除以 33 的余数。所以 66%33 是 0,67%33 是 1。

2) For 循环通常是当您需要在定义的范围内循环时(并非总是如此,但通常如此)。例如。 “将前 100 个整数相加”。 while 循环在这里更有意义。它肯定会终止,因为在某些时候你会达到 33 * 237。

3) if i%33 == 0 and i%237 == 0: 表示当数字可以被 37 和 237 均分(无余数)时,我们想做一些事情。

n=1001
while True:
    if n%33==0 and n%237==0:
        print(n)
        break
    n+=1

【讨论】:

  • 感谢您的解释!现在我明白了更多
【解决方案3】:

for 循环在这里对您没有帮助,因为您不知道何时结束循环。当您要循环的内容范围已知时,您通常会使用 for 循环。

相反,请执行以下操作:

在开始 while: True 循环之前:将 i 设置为 0,

然后每次循环增加i 1

另外,不要忘记在i>1000时停止循环!

【讨论】:

  • 感谢您回复我。好吧,这项工作需要第 1,3 行和最后一行,因此我无法在它们之间删除或添加任何代码。顺便说一句,非常感谢!
【解决方案4】:

你仍然可以使用for 循环,只要上限至少与最大可能结果一样高。结果将在 i 中,而不是在 n 中,for 循环就足够了,而不是额外的 while 循环。当除以 33 和 237 的余数为零(即它们都是因数)时,for 循环将中断。

n = 1001 #This one is required

for i in range(n, 33 * 237 + 1): # I don't know what should i put in the blank
    if i % 33 == 0 and i % 237 == 0: # I really confused about this line
        break #
print(f"The value of i is {i}") #This one is also required

您也可以使用 while 循环并对条件使用相同的逻辑。在这种情况下,我们测试至少有一个不是因素并继续循环,直到 33 和 237 都可以整除 i。

n = 1001 #This one is required

i = n
while i % 33 or i % 237:
    i += 1
print(f"The value of i is {i}") 

【讨论】:

  • 感谢您的解释!我真的很感激!
猜你喜欢
  • 2020-06-03
  • 2019-10-22
  • 2018-07-07
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
相关资源
最近更新 更多