我正在做{{}}}次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
答案 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
由于您返回一个字符串,您必须在追加它之前转换该数字。我没有为你修好一切,但这应该让你感动。