函数在for循环内打印出多个正确的输出,在for循环外无法正确打印

时间:2018-10-18 22:16:06

标签: python python-3.x

我的函数运行正常,但是由于它处于for循环中,因此会多次打印输出。当我尝试将其从for循环中删除时,它只会多次打印前一位。

我的代码:

myNum=4
iterationCount=3
doSummation=True

def printSomeNumbers(myNum,iterationCount,doSummation):

    for i in range(iterationCount):
        if (doSummation== False):
            print(myNum)
        else:
            counter= 0
            for i in range(iterationCount):
                counter+=myNum
                print(counter)          

printSomeNumbers(myNum,iterationCount,doSummation)

当我运行它时,它输出:

4
8
12
4
8
12
4
8
12

我希望它仅输出:

4
8
12

当我像这样更改打印缩进量时:

else:
    counter= 0
    for i in range(iterationCount):
        counter+=myNum
    print(counter)   

或者向左进一步输出:

12
12
12

当doSummation为False时,只应将myNum输出为迭代计数值的倍数。

2 个答案:

答案 0 :(得分:0)

下面是一个仅打印一次的示例。像其他评论一样,嵌套的for循环导致其打印3次。

这将正常打印:

def printSomeNumbers(myNum,iterationCount,doSummation):
  if doSummation:
    counter= 0
    for i in range(iterationCount):
        counter+=myNum
        print(counter)  
  else:
    for i in range(iterationCount):
      print(myNum)

答案 1 :(得分:0)

以下是相同的代码,但进行了一些重新整理以有望解决该问题:

def printSomeNumbers(myNum,iterationCount,doSummation):

    if (doSummation== False):
        print(myNum)
    else:
        counter= 0
        for i in range(iterationCount):
            counter+=myNum
            print(counter)

printSomeNumbers(4,3,True)
print('...')
printSomeNumbers(4,3,False)

此固定代码的输出为:

4
8
12
...
4