我真的需要帮助。我尝试将这个Perl翻译成Python,但它似乎没有做我想要的。
谢谢!
的Perl:
@X_max = &MaxValue(@xCoords);
$maxX = int(10 * $X_max[0]/5);
@X_min = &MinValue(@xCoords);
$minX = int(10 * $X_min[0]/5);
$rangeX = &Range($minX, $maxX);
print GRID "X:\t $maxX\t $minX\t\t $rangeX\n";
Python(到目前为止):
_max = max(xCoords)
max(X) = int(10 * max((X)0/5))
X_min = min(xcoords)
min(X) = int(10 * min((X)0/5))
range(X) = range(min(X), max(X))
print('X:') ('%4s') % min, '%15s' % max, '%25s' % range
答案 0 :(得分:6)
Perl看起来不像是Python min
,max
和range
函数。因为MaxValue
返回值的列表,在下一步中会忽略这些值,因为代码只是获取列表中的第一项。所以它可能是这样的:
x_max = max( xcoords );
maxx = int( 10 * x_max / 5 );
x_min = min( xcoords );
minx = int( 10 * x_min / 5 );
rangex = range( minx, maxx );
grid.write( "X:\t{0}\t{1}\t{2}\t{3}".format(minX, maxX, rangeX));
甚至:
rangex = range( 2 * min( xcoords ), 2 * max( xcoords ));
然而,范围似乎表明它只是一个简单的变量,也许只是maxx - minx + 1
。所以我不认为Python range
会起作用。
至少可以说这是过于复杂的代码:10 * x / 5 <=> 2 * x
。
答案 1 :(得分:1)
我吮吸Perl,我不知道Range()做了什么,但我尝试了,我写了这个:
X_max = []
X_min = []
for i in xCoords:
X_max.append(i.max)
X_min.append(i.min)
maxX = 10 * X_max[0] / 5
minX = 10 * X_min[0] / 5
rangeX = range(minX, maxX)
out = "X:\t{0}\t{1}\t{2}\t{3}".format(minX, maxX, rangeX)
#now you can do print out -OR- open('./file', 'w').write(out)