所以我一直在做一些代码性的挑战,我想做的是我期望的相对简单的一个 - fizzbuzz。我很确定我有它工作。它从输入,第一个数字嘶嘶声,第二个嗡嗡声和第三个数字来计算。代码是:
import sys
def newList(countLen):
myList = []
for i in range(0, countLen):
myList.append(i + 1)
return myList
def fizzbuzz(z, countLen, myList):
first = int(z[0])
second = int(z[1])
for i in range(0, countLen):
if int(myList[i]) % first == 0 and int(myList[i]) % second == 0:
if i == countLen - 1:
print "FB"
else:
print "FB",
elif int(myList[i]) % first == 0:
if i == countLen - 1:
print "F"
else:
print "F",
elif int(myList[i]) % second == 0:
if i == countLen - 1:
print "B"
else:
print "B",
else:
print myList[i],
with open("input.txt", "r") as f:
for line in f:
group = list(line.split())
count = int(group[-1])
numList = newList(count)
fizzbuzz(group, count, numList)
现在像这段代码一样优雅,我确信它有效,如果我的输入是
2 12 22
2 18 30
2 7 25
我的输出是
1 F 3 F 5 F 7 F 9 F 11 FB 13 F 15 F 17 F 19 F 21 F
1 F 3 F 5 F 7 F 9 F 11 F 13 F 15 F 17 FB 19 F 21 F 23 F 25 F 27 F 29 F
1 F 3 F 5 F B F 9 F 11 F 13 FB 15 F 17 F 19 F B F 23 F 25
最后没有空格,就像要求的那样。但是,每次提交时,代码都会失败或部分成功。我想这可能是因为如果我交换输出周围的最后2个输入看起来像
1 F 3 F 5 F 7 F 9 F 11 FB 13 F 15 F 17 F 19 F 21 F
1 F 3 F 5 F B F 9 F 11 F 13 FB 15 F 17 F 19 F B F 23 F 25 1 F 3 F 5 F 7 F 9 F 11 F 13 F 15 F 17 FB 19 F 21 F 23 F 25 F 27 F 29 F
我注意到有时会发生这种情况,因为数字计数也会在输入结束时以5结尾(即45.我尝试在打印时添加新行,但问题仍然存在。 任何有助于在新线上打印所有内容的帮助都将是一个很大的帮助。 (我在pycharm控制台中运行代码,如果它影响任何东西)
答案 0 :(得分:1)
您错过了else
中的最终条件声明
改变:
else:
print myList[i],
是:
else:
if i == countLen - 1:
print myList[i]
else:
print myList[i],