对于Python中的循环计时器功能

时间:2015-03-19 14:22:19

标签: arrays python-2.7 math numpy modulus

所以我创建了一个在命令提示符下运行的程序,在我的程序中,一个数组必须通过for循环迭代:

counter=0
for i in range(0,rows):
    for j in range(0,cols):
        array[i,j]=3 #just an arbitrary number
    counter=Time_Function(i,rows,counter,0)

我需要像这样在cmd中计算数组:

>>0...10...20...30...40...50...60...70...80...90...100

我让它适用于一个行= 2018,cols = 486的数组,但是当我输入一个行= 2023的不同数组时,cols = 486它给了我这个:

>>0....10...20...30...40...50...60...70...80...90...100

我真的想摆脱010之间那段讨厌的额外时间!我知道这可能是因为第二个数组有更多行,但我似乎无法使用模数运算符的当前知识来修复它:(这是我创建的Time_Function

def Time_Function(i,rows,counter,start):
    if  i==start or i% round(rows/10) ==0:
        sys.stdout.write(str(counter))
        counter=counter+10
    if i% round((rows/10)/3) ==0:  #check update, I tried the condition i!=start
        sys.stdout.write('.')
    return counter   

(注意:我知道这可能看起来像是一个非常小的问题,但额外的时期看起来如此严重,所以我需要摆脱它)

更新:我尝试了建议的代码(将i!=start条件置于第二个if statement),它给了我这个:

>> 0..10...20...30...40...50...60...70...80...90...100.

>> 0...10...20...30...40...50...60...70...80...90...100

2 个答案:

答案 0 :(得分:1)

import sys
def Time_Function(i,rows,counter,start,var):

    if  i==start or i% round(rows/10) ==0 and counter <=100:
        sys.stdout.write(str(counter))
        counter=counter+10
        var=0
    if i% round((rows/10)/3) ==0 and counter <=100 and var<3:  
        sys.stdout.write('.')
        var=var+1
    return [counter,var] 

def Project(array,rows,cols):
    counter=var=0
    for i in range(0,rows):
        for j in range(0,cols):
            array=3 #just an arbitrary number
        [counter,var]=Time_Function(i,rows,counter,0,var)

array1=1
array2=2
Project(array1,2018,486)
print "\n"
Project(array2,2023,486)

答案 1 :(得分:0)

你的函数中的问题在于第二个if语句。模数为0(您当前的起始编号)也会生成一个您不期望的点。

因此,检查我是不是您的起始编号或不是零应该使您的功能正确。