преобразовать кусок кода из ruby ​​в python - PullRequest
0 голосов
/ 06 января 2019

У меня есть кусок кода, который был написан на Ruby. Я хочу преобразовать его в Python.

def decode(bitstring, search_space, bits_per_param)
  vector = []
  search_space.each_with_index do |bounds, i|
    off, sum = i*bits_per_param, 0.0
    param = bitstring[off...(off+bits_per_param)].reverse
    param.size.times do |j|
      sum += ((param[j].chr=='1') ? 1.0 : 0.0) * (2.0 ** j.to_f)
    end
    min, max = bounds
    vector << min + ((max-min)/((2.0**bits_per_param.to_f)-1.0)) * sum
  end
  return vector
end

Я конвертирую, как показано ниже. Мне нужна помощь в конвертации param.

def decode(bitstring, search_space, bits_per_param):
    vector = []
    for i, bounds in enumerate(search_space):
        sum = i * bits_per_param



    for j in xrange(0, len(param)):
        sum += iif(param[j] == '1', '0', '1') * (2 ** j), param[j]
    min, max = bounds
    vector = min + ((max - min) / ((2.0 ** bits_per_param) - 1.0)) * sum
    return vector

param не был преобразован правильно.

пс. Вот код функции iif :

def iif(condition, true_part, false_part):
    return (condition and [true_part] or [false_part])[0]

1 Ответ

0 голосов
/ 08 января 2019

Я думаю, что смог бы частично решить мою проблему. Код на python будет выглядеть следующим образом.

def decode(bitstring, search_space, bits_per_param):
vector = []
for i, bounds in enumerate(search_space):
    off, sum = i * bits_per_param, 0.0
    param = (bitstring[off:(off+bits_per_param)])[::-1]
    for j in xrange(0, len(param)):
        if param[j].__str__() == '1':
            sum += 1.0 * (2**float(j))
        else:
            sum += 0.0 * (2**float(j))
    min, max = bounds
    vector.append(min + ((max - min) / ((2.0 ** bits_per_param) - 1.0)) * sum)
return vector
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...