简单的fizzbuzz问题

时间:2016-11-09 17:45:29

标签: python python-2.7 fizzbuzz

我正在做{{}}}次fizzbuzz次挑战。现在我确定这是一个非常简单的问题而且我只是在看它,但我在CodeEval这样做,这对我来说是相当新的,只是在学习。

  

玩家通常坐成一圈。第一个玩家说数字“1”,每个玩家轮流说下一个数字。但是,任何可被X整除的数字(例如,三个)都会被单词fizz替换,而任何可被Y整除(例如,五个)的单词都会被单词buzz替换。被两者整除的数字成为嘶嘶声。从游戏中消除了犹豫不决或犯错误的玩家。

     

编写一个程序,打印出最后一系列数字,其中可被X,Y和两者整除的数字被“F”替换为fizz,“B”替换为buzz,“FB”替换为fizz buzz。

     

输入样本:

     

您的程序应接受文件作为其第一个参数。该文件包含多个分隔的行;每行包含3个以空格分隔的数字。第一个数字是第一个分频器(X),第二个数字是第二个分频器(Y),第三个数字是您应该计算的距离(N)。您可以假设输入文件格式正确,并且数字是有效的正整数。

     

例如:

     

3 5 10

     

2 7 15

     

输出样本:

     

1 2 F 4 B F 7 8 F B

     

1 F 3 F 5 F B F 9 F 11 F 13 FB 15

     

打印系列1到N,用“F”代替可被X整除的数字,用“B”分割为Y的数字和用“FB”分割的数字。由于输入文件包含多组值,因此输出应每行打印一行。确保您打印的每一行都没有尾随空格。

     

约束:

     

测试用例数≤20

     

" X"在范围[1,20]

     

" Y"在范围[1,20]

     

" N"在[21,100]范围内

当我运行程序时,我从文件中获得以下输出:

python

我的程序没有正确运行文件,我做错了什么?

1
1

1 个答案:

答案 0 :(得分:1)

您的函数返回 x 的第一个值。你需要在循环中建立一串响应,然后在完成循环之后只返回的字符串。

另请注意,您的逻辑无法返回" FB",因为 else 条款中的" F"和" B"。

series = ""
for x in num_range:
    if x % div_low == 0 and x % div_high == 0:
        series += "FB"
    elif x % div_low == 0:
        series += "F"
    elif x % div_high == 0:
        series += "B"
    else:
        series += str(x)

return series

由于您返回一个字符串,您必须在追加它之前转换该数字。我没有为你修好一切,但这应该让你感动。