Краткий перевод с Perl на Python - PullRequest
0 голосов
/ 03 августа 2011

Мне действительно нужна помощь в этом. Я пытался перевести этот 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

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

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 голос
/ 03 августа 2011

Я сосу на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...