Python 中的循环定时器函数

For Loop Timer Function in Python

所以我创建了一个在命令提示符下运行的程序,在我的程序中,一个数组必须通过 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

我让它适用于 rows=2018、cols=486 的一个数组,但是当我输入另一个 rows=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

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

因此检查 i 是否不是您的起始编号或不为零应该可以使您的功能正确。

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)