Twilio 任务中的 Fizzbuzz 挑战

Fizzbuzz Challenge in Twilio quest

我最近下载了 Twilio 任务,我喜欢它!但是,我陷入了入门级 Python 挑战之一。它应该很容易解决,但不知何故我似乎无法解决这里的错误。任何人都可以查看我的代码并找到我显然找不到的明显错误吗?

import sys

inputs = sys.argv
inputs.pop(0)



for i in inputs:
    print(i)
    n = int(i) 
    for x in range(1,n+1):
        if x % 3 == 0 and x % 5 == 0:
            print("fizzbuzz")
        elif x % 3 == 0:
            print("fizz")
        elif x % 5 == 0:
            print("buzz")
        else:
            print(x)

挑战是解决 fizzbuzz 挑战,输入多个数字。错误产生: “我们向您的脚本传递了一个可同时被 3 和 5 整除的数字,并希望您打印 fizzbuzz,但您却打印了 -3000。

所以输入是 -3000,应该通过我的第一次测试,因为它确实可以被 3 和 5 整除。我似乎无法理解为什么输入 -3000 会跳转到“else” -我的for循环的一部分。

如果输入只是一个数字,则不需要for循环。 逻辑是正确的。 一种修复方法可以是:

import sys

inputs = int(sys.argv[-1])
x=inputs
if x % 3 == 0 and x % 5 == 0:
    print("fizzbuzz")
elif x % 3 == 0:
    print("fizz")
elif x % 5 == 0:
    print("buzz")
else:
    print(x)

对于输入中的 int 列表:

import sys

inputs = [int(x) for x in sys.argv[1:]]
for x in inputs:
    if x % 3 == 0 and x % 5 == 0:
        print("fizzbuzz")
    elif x % 3 == 0:
        print("fizz")
    elif x % 5 == 0:
        print("buzz")
    else:
        print(x)

问题是要求您为每个输入遍历从 1 到 N 的每个数字,还是要求您只检查输入的单个数字?

如果它只是一个元素,那么我相信下面的代码就足够了:

import sys

inputs = sys.argv
inputs.pop(0)
for i in inputs:
    # print(i)
    n = int(i) 
    if n % 3 == 0 and n % 5 == 0:
        print("fizzbuzz")
    elif n % 3 == 0:
        print("fizz")
    elif n % 5 == 0:
        print("buzz")
    else:
        print(n)