Saltar al contenido

Convertir código de Python a PHP

Nuestro equipo de redactores ha estado mucho tiempo buscando la resolución a tu duda, te brindamos la resolución así que esperamos servirte de gran apoyo.

Solución:

No conozco ningún convertidor de Python a PHP en la naturaleza, pero debería ser una tarea trivial para portar y las similitudes son bastante fáciles de detectar:

function calcNumEntropyBits($s) 
        if (strlen($s) <= 0) return 0.0;
        $symCount = array();
        foreach (str_split($s) as $c) 
                if (!in_array($c,$symCount)) $symCount[$c] = 1;
                else $symCount[$c] ++;
        
        $entropy = 0.0;
        foreach ($symCount as $c=>$n) 
                $prob = $n / (float)strlen($s);
                $entropy += $prob * log($prob)/log(2);
        
        if ($entropy >= 0.0) return 0.0;
        else return -($entropy*strlen($s));


function testEntropy($s):
        printf("Bits of entropy in '%s' is %.2f",$s,calcNumEntropyBits($s));

testEntropy('hello world');
testEntropy('bubba dubba');
testEntropy('aaaaaaaaaaa');
testEntropy('aaaaabaaaaa');
testEntropy('abcdefghijk');

Las últimas líneas de la primera función también podrían haberse escrito como una expresión ternaria estándar de PHP:

return ($entropy >= 0.0)? 0.0: -($entropy*strlen($s));

Estoy a medio camino de hacer un intérprete de PHP en Python y puedo decirles que hay literalmente docenas de casos extremos importantes que se desarrollan en miles de posibilidades que harían casi imposible migrar Python a PHP. Python tiene una gramática mucho más robusta que PHP, aunque más avanzada en el lenguaje, la stdlib de Python es probablemente una de las más avanzadas en comparación con cualquier otro lenguaje de su clase.

Mi recomendación es llevar su pregunta un paso más atrás, a por qué necesita un conjunto de lógica basada en Python en PHP. Las alternativas para intentar portar/traducir su código podrían incluir el subprocesamiento de PHP a Python, usar Gearman para que Python funcione en el backend mientras PHP maneja la lógica de vista, o una solución mucho más complicada sería implementar un bus de servicio o una cola de mensajes entre una aplicación PHP y servicios de Python.

PD. Disculpas por cualquier problema de legibilidad, terminando un sprint de 2 días en este momento.

Creé un convertidor de python a php llamado py2php. Puede traducir automáticamente la lógica básica y luego deberá modificar las llamadas a la biblioteca, etc. Todavía experimental.

Aquí está el PHP generado automáticamente desde el python proporcionado por el OP.

iteritems() as $temp_c ) 
        $prob = ($n / float(count($s)));
        $entropy += ($prob * (math::log($prob) / math::log(2)));
    
    if (($entropy >= 0.0)) 
        return 0.0;
    
    else 
        return -($entropy * count($s));
    


function testEntropy($s) 
    pyjslib_printFunc(sprintf('Bits of entropy in '%s' is %.2f', new pyjslib_Tuple([$s, calcNumEntropyBits($s)])));


testEntropy('hello world');
testEntropy('bubba dubba');
testEntropy('aaaaaaaaaaa');
testEntropy('aaaaabaaaaa');
testEntropy('abcdefghijk');

No se ejecutaría correctamente debido a la importación matemática y __contains__, pero sería bastante fácil de arreglar a mano.

Te mostramos las reseñas y valoraciones de los lectores

Si para ti ha sido provechoso este post, sería de mucha ayuda si lo compartes con otros programadores y nos ayudes a difundir nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *