Python While Loop,也使用模和继续命令



正在尝试完成此任务,要求我:

"写一个 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)

预期的答案应该是:

2019171614131110875421

但我只是收到"超时"错误

***最近的::

尝试此操作:

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(), "147n")
AssertionError:     '1n2n4n5n7n8n10n11n13n14n16n17n19n20n1n' != '147n'

- 1- 2- 4- 5- 7- 8- 10- 11- 13- 14+ 147? +- 16- 17- 19- 20- 1

您不会在第一个语句中递增x if因此它停留在该值并永远循环。你可以试试这个。

total, x = 0, 1
while x >=1 and x <= 20:
    if x%3==0:
        x+=1  # incrementing x here
        continue
    elif x%3 != 0:  # using an else statement here would be recommended
        print(x)
        x+=1
        total+=x  # we are summing up all x's here
print(total)

或者,您可以在 if 语句之外递增x。您也可以使用range()。在这里,我们只是忽略了可被3整除x

total, x = 0, 1
for x in range(1, 21):
    if x%3 != 0:
        print(x)
        x+=1
        total+=x
print(total)

试试这个,

>>> lst = []
>>> while x >=1 and x <= 20:
    if x%3==0:
        x+=1  # this line solve your issue
        continue
    elif x%3 != 0:   # Use elif instead of if
        lst.append(x) # As your expected output is in reverse order, store in list
        x+=1
        total+=1

一班:(另一种方式(

>>> [x for x in range(20,1,-1) if x%3 != 0]
[20, 19, 17, 16, 14, 13, 11, 10, 8, 7, 5, 4, 2]

输出:

>>> lst[::-1] # reverse it here
[20, 19, 17, 16, 14, 13, 11, 10, 8, 7, 5, 4, 2, 1]

相关内容

最新更新