我正在开发一个脚本来检查一个数据帧的列的和是否在一定的时间间隔内超过3
loc_number = 10 # start loc image number with 10
k = 2
while k < 3:
for i in range(0, int(len(target_df.index)/loc_number), loc_number):
print(range(0, int(len(target_df.index)/loc_number), loc_number))
print(loc_number, i)
loc_target_df = target_df.loc[i: i+loc_number].sum(skipna=True, axis=0)
print(loc_target_df)
if any(x < 3 for x in loc_target_df):
loc_number += 1
print('heloo')
break
else:
print('here')
pass
print('probably')
continue
似乎在开始时,它转到“if”并打印“heloo”一段时间,这意味着特定列的值之和不超过三。好啊这是我想要的
然而,当它转到else时,这意味着cloumn的总和超过3,它应该转到下一个“for循环”而不是“while”。但它会一次又一次地转到while循环,所以打印如下:
here
probablay
range(0, 14, 322)
322 0
10.000000 272
26.400000 210
31.680000 106
38.016000 113
45.619200 215
54.743040 146
65.691648 224
78.829978 255
94.595973 321
113.515168 308
136.218201 356
163.461842 270
196.154210 190
235.385052 97
282.462062 47
338.954475 32
406.745370 6
488.094443 3
dtype: int64
here
probablay
range(0, 14, 322)
322 0
10.000000 272
26.400000 210
31.680000 106
38.016000 113
45.619200 215
54.743040 146
65.691648 224
78.829978 255
94.595973 321
113.515168 308
136.218201 356
163.461842 270
196.154210 190
235.385052 97
282.462062 47
338.954475 32
406.745370 6
488.094443 3
dtype: int64
here
probablay
range(0, 14, 322)
322 0
10.000000 272
26.400000 210
31.680000 106
38.016000 113
45.619200 215
54.743040 146
65.691648 224
78.829978 255
94.595973 321
113.515168 308
136.218201 356
163.461842 270
196.154210 190
235.385052 97
282.462062 47
338.954475 32
406.745370 6
488.094443 3
dtype: int64
here
probablay
range(0, 14, 322)
322 0
我的while for loop有什么问题??以及如何使for循环工作
我将回答第一个问题,也许您可以提供更多关于它通过
else
之后应该做什么的细节。我觉得你希望代码做一些与现在完全不同的事情我希望它能有所帮助,尽管它是相当多的文本
让我们看看执行情况:
loc_number = 10, k = 2
李>k < 3
是否为true李>loc_number = 10
的步骤中定义从0到int(len(target_df.index)/loc_number) = 450
的范围,这是一个迭代器,将在第一次迭代中设置i = 0
i = 0
,代码将打印10 0
,然后计算从第0
行到第i + loc_number = 0 + 10 = 10
行的数据帧所有元素的总和。这将为每列返回一个值,并再次打印该值李>x < 3
),如果是,则将loc_number
增加1
(loc_number = 11)
),打印'heloo'
并中断for
循环'probably'
k < 3 == True
,使用range(0, 409, 11)
(在11
的步骤中从0
到14
)初始化一个新的for循环,它将在第一次迭代中再次设置i = 0
i = 0
,代码打印11 0
,然后计算数据帧中从第0
行到第i + loc_number = 0 + 11 = 11
行的所有元素的总和。这将为每列返回一个值,如果其中任何一个小于3,则再次检查该值loc_number += 1 = 12
,它打印'heloo'
,然后您再次跳出for循环loc_number = 322
。现在,range(0, 14, 322)
只返回0
,所以for
循环只设置i = 0
,从第0行到第322行求和,代码打印322 0
any(x < 3)
的计算结果为False
,并且else
被调用。在那里,loc_number
保持不变,代码打印'here'
for
循环在range()
迭代器中找不到其他元素,因此for
循环结束,代码打印'probably'
range(0, 14, 322)
初始化一个for
循环,该循环的执行方式与以前相同,没有任何值小于3while
语句总是正确的也许有一点让人困惑,python中的
for
与其他语言中的foreach
类似另外,我建议运行以下代码片段以更好地理解
range(start, stop, step)
函数,因为我认为它的行为也与您假设的不同:相关问题 更多 >
编程相关推荐