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
我真的很想摆脱 0
和 10
之间那段讨厌的额外时间!我知道这可能是因为第二个数组有更多行,但我似乎无法使用我对模数运算符的当前知识来修复它:(这是我创建的 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)
所以我创建了一个在命令提示符下运行的程序,在我的程序中,一个数组必须通过 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
我真的很想摆脱 0
和 10
之间那段讨厌的额外时间!我知道这可能是因为第二个数组有更多行,但我似乎无法使用我对模数运算符的当前知识来修复它:(这是我创建的 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)