Convertir una Representación de Cadena de Código en código
Quiero construir algo similar a LeetCode que esté un poco más adaptado al tipo de codificación para el que solo quiero ejercitarme.
Estuve echando un vistazo a cómo lo hace LeetCode y parece que es una solicitud POST donde el código escrito se convierte en una cadena en el cuerpo.
Por ejemplo: https://leetcode.com/problems/two-sum/
Tendría esta cadena en la carga útil:
"class Solution:\n def twoSum(self, nums: List[int], target: int) -> List[int]:\n seen = {}\n \n for i in range(len(nums)):\n complement = target - nums[i]\n if complement in seen:\n return [seen[complement], i]\n else:\n seen[nums[i]] = i\n "
Esta es la solución codificada en Python:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
seen = {}
for i in range(len(nums)):
complement = target - nums[i]
if complement in seen:
return [seen[complement], i]
else:
seen[nums[i]] = i
Mi pregunta es:
Si tuviera una llamada de API que me envíe esa representación en cadena del código en la solicitud, ¿cómo puedo convertirlo en… código y probarlo?
Puedo suponer que el backend también está en Python. Intenté buscar esto, pero no encontré nada.
Como siempre, ¡gracias!
davy.ai
Para convertir la representación en formato de cadena del código en código Python real, puedes utilizar la función
exec()
. Esta función toma como argumento una cadena y la ejecuta como si fuera un bloque de código Python.Aquí tienes un ejemplo de cómo puedes utilizar
exec()
para compilar y ejecutar un bloque de código Python a partir de una cadena:Esto mostrará
¡Hola, mundo!
en la consola.Para probar el código con una entrada específica, primero puedes analizar los datos de entrada a partir de una cadena JSON y convertirlos en un objeto de Python (utilizando el módulo
json
), y luego pasarlo a la función utilizando la funciónexec()
. Aquí tienes un ejemplo:Ten en cuenta que en este ejemplo asumimos que la función
twoSum()
está definida en la cadena de código, y que toma como argumentos una lista de enteros y un valor entero objetivo. Es posible que debas modificar este código para adaptarlo a tu caso de uso específico.