【发布时间】:2019-05-26 06:04:36
【问题描述】:
尝试完成要求我完成的任务:
"编写一个 while 循环,计算从 1 到 20(包括)的整数之和,不包括可以被 3 整除的整数。(提示:您会发现模运算符 (%) 和 continue 语句很方便这个。)
我尝试自己构建代码,但代码的评估超时。我猜我的语法不正确并导致无限循环
total, x = 0, 1
while x >=1 and x <= 20:
if x%3==0:
continue
if x%3 != 0:
print(x)
x+=1
total+=1
print(total)
预期的答案应该是:
20 19 17 16 14 13 11 10 8 7 5 4 2 1
但我只是收到“超时”错误
***最新::
尝试过:
total, x = 0, 1
while x>=1 and x<=20:
if x%3 == 0:
x+=1
continue
if x%3 != 0:
print(x)
x+=1
total=+1
print(total)
收到这个::
Traceback (most recent call last):
File "/usr/src/app/test_methods.py", line 23, in test
self.assertEqual(self._output(), "147\n")
AssertionError: '1\n2\n4\n5\n7\n8\n10\n11\n13\n14\n16\n17\n19\n20\n1\n' != '147\n'
- 1 - 2 - 4 - 5 - 7 - 8 - 10 - 11 - 13 - 14 + 147 ? + - 16 - 17 - 19 - 20 - 1
【问题讨论】:
-
只运行循环直到 20,因为你给
x的值是 1,还有total += x我猜是这样? -
你应该在
x += 1外面if声明。 -
或者更好的是,只需执行
for x in range(1,21)并摆脱x += 1。 -
您的
AssertionError与您共享的代码无关。另外,请尝试我在下面的答案部分分享的代码。
标签: python while-loop modulo continue