如果预先输入结束于5,则输出打印在同一行。

时间:2016-02-07 08:04:12

标签: python python-2.7

所以我一直在做一些代码性的挑战,我想做的是我期望的相对简单的一个 - 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控制台中运行代码,如果它影响任何东西)

1 个答案:

答案 0 :(得分:1)

您错过了else中的最终条件声明 改变:

else:
    print myList[i],

是:

else:
    if i == countLen - 1:
        print myList[i]
    else:
        print myList[i],