elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Python (Moderador: Danielㅤ)
| | |-+  [Python 3.6] Un intento de no se que... y un problemita
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python 3.6] Un intento de no se que... y un problemita  (Leído 2,968 veces)
n1sen

Desconectado Desconectado

Mensajes: 122



Ver Perfil
[Python 3.6] Un intento de no se que... y un problemita
« en: 27 Septiembre 2017, 00:12 am »

Hola, estaba aburrido y programe esto:

Código
  1. import os
  2.  
  3. filepath = input("Ruta del archivo: ")
  4.  
  5. archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8
  6.  
  7. for linea in archivo.readlines():
  8.  
  9.    if "$$" in linea: # $$ Indica que hay un comentario
  10.        pass
  11.  
  12.    elif "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
  13.        arreglo = linea.split('"')
  14.        arreglo2 = linea.split('"')
  15.        # print(arreglo[1])
  16.        # print(arreglo2[1])
  17.        num1 = arreglo[1]
  18.        num2 = arreglo2[1]
  19.  
  20.        int(num1)
  21.        int(num2)
  22.  
  23.        total = float(num1) + float(num2)
  24.        print(total)
  25.  
  26.    elif "clrscr()" in linea:
  27.        os.system('cls')
  28.  
  29.    elif "int" in linea: # "int" Indica que es una variable de tipo entero
  30.        varName = linea.split('"') # Nombre de la variable
  31.        varValue = linea.split('|') # Valor de la variable
  32.  
  33.        print(varName[1])
  34.        print(varValue[1])
  35.  
  36.    elif "putsln" in linea: # putsln Indica que se imprimira un texto
  37.        putslnFunction = linea.split('"')
  38.        printedText = putslnFunction[1]
  39.  
  40.        if printedText == varName[1]: # <== NO FUNCIONA
  41.            print(varValue[1])          
  42.        elif printedText == '':
  43.            print("is null!")
  44.        else:
  45.            print(printedText)
  46.  
  47. archivo.close()
  48.  
  49. print("Code execution finished.")
  50. os.system('pause')
  51.  
  52.  

Bueno, practicamente seria un """""lenguaje de programación""""" (notese la cantidad de comillas) que cree, para escribir código en este """""lenguaje de programación""""" , se hace en un fichero
con extensión .ocl, aunque le puedes poner cualquier extension...
Ejemplo:
Código:
$$Este es un comentario

putsln "áéíóú ÁÉÍÓÚ äëïöü àèìòù"
putsln "Ñandú!"
add "5" "5"
int "variable" |8|
putsln "variable"

Si, una de las sintaxis mas raras. Parece una amalgama de lenguajes
La funcion "add" suma numeros
La función "putsln" imprime texto en pantalla
La función int, es para variables, funciono, hasta que intente que se pueda imprimir variables con la función "putsln"

Como dije anteriormente, ahi empeze a tener problemas, ya que me aparecia que la variable varName (que es el nombre a la variable) y varValue (que es el valor de la variable) no estaban definidas, pero si lo están.

PD: en sí, las partes donde se usa split, lo saque de un código donde me ayudo engel lex, en un tema que cree [Python 3.6] Como hacer que python lea una cadena especifica de un fichero?


« Última modificación: 27 Septiembre 2017, 04:19 am por n1sen » En línea

null
n1sen

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: [Python 3.6] Un intento de no se que...
« Respuesta #1 en: 27 Septiembre 2017, 00:14 am »

Este incomodo momento donde nadie comenta nada y pasa como otra post mas desapercibido...
(Por ahora :))
Lo de arriba lo puse a las 9:54PM, hora chilena


« Última modificación: 27 Septiembre 2017, 02:54 am por n1sen » En línea

null
**Aincrad**


Desconectado Desconectado

Mensajes: 683



Ver Perfil WWW
Re: [Python 3.6] Un intento de no se que...
« Respuesta #2 en: 27 Septiembre 2017, 00:57 am »

tu mismo te criticas?  :huh:

abres el tema y luego te troleas......   :laugh:  :laugh:  :laugh:  :D  :D  :D XD



En línea



n1sen

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: [Python 3.6] Un intento de no se que...
« Respuesta #3 en: 27 Septiembre 2017, 01:07 am »

Al parecer sí :P
De paso borro el anterior comentario antes de que llegue otro  :silbar:
En línea

null
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: [Python 3.6] Un intento de no se que... y un problemita
« Respuesta #4 en: 27 Septiembre 2017, 08:38 am »

realmente me causa gracia este código, pero en fin:
Código
  1. elif "putsln" in linea: # putsln Indica que se imprimira un texto
  2.        putslnFunction = linea.split('"')
  3.        varName = linea.split('"') # Nombre de la variable
  4.        printedText = putslnFunction[1]
  5.        varValue = linea.split('|') # Valor de la variable
  6.        if printedText == varName[1]: # <== NO FUNCIONA
  7.            print(varValue[0])          
  8.  

para que funcione sin cambiar la estrucutra general del código, pero con esta forma de escribir lo estaras complicando y alargando de más.

Edito:
como tuve ganas hice otro código para que veas otra forma simple de hacerlo:
Código
  1. import re
  2.  
  3. class Leer:
  4.    def __init__(self,archivo):
  5.        self.lectura = open(archivo,'r')
  6.        self.sentencias={"add":self.sumar,"putsln":self.salida}
  7.  
  8.    def sumar(self):
  9.        text = linea
  10.        str_pat = re.compile(r'\"(.*?)\"')
  11.        cadena=str_pat.findall(text)
  12.        enteros = list(map(int, cadena))
  13.        print(sum(enteros))
  14.  
  15.  
  16.    def salida(self):
  17.        text = linea
  18.        str_pat = re.compile(r'\"(.*?)\"')
  19.        cadena=str_pat.findall(text)
  20.        print("".join(cadena))
  21.  
  22.    def mostrar(self):
  23.        global linea
  24.        lista_sentencias=sorted(self.sentencias.keys())
  25.        for linea in self.lectura.readlines():
  26.            for cadena in lista_sentencias:
  27.                orden= re.compile(cadena)
  28.                if orden.match(linea):
  29.                    accion = self.sentencias.get(cadena)
  30.                    accion()
  31.        self.lectura.close()            
  32.  
  33.  
  34. archivo1=Leer('prueba.txt')
  35. archivo1.mostrar()
  36.  
« Última modificación: 27 Septiembre 2017, 12:12 pm por tincopasan » En línea

n1sen

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: [Python 3.6] Un intento de no se que... y un problemita
« Respuesta #5 en: 28 Septiembre 2017, 00:16 am »

Muchas gracias  :)
En línea

null
n1sen

Desconectado Desconectado

Mensajes: 122



Ver Perfil
Re: [Python 3.6] Un intento de no se que... y un problemita
« Respuesta #6 en: 28 Septiembre 2017, 01:23 am »

Código
  1. import os
  2.  
  3. filepath = input("Ruta del archivo: ")
  4.  
  5. archivo = open(filepath, "r", encoding = 'utf-8') # Abre el archivo con codificado UTF-8
  6.  
  7. for linea in archivo.readlines():
  8.  
  9.    if "add" in linea: # "add" Indica que los proximos numeros que esten entre comillas simples seran sumados
  10.        arreglo = linea.split('"')
  11.        arreglo2 = linea.split('"')
  12.  
  13.        # print(arreglo[1])
  14.        # print(arreglo2[1])
  15.  
  16.        num1 = arreglo[1]
  17.        num2 = arreglo2[1]
  18.  
  19.        int(num1)
  20.        int(num2)
  21.  
  22.        total = float(num1) + float(num2)
  23.        print(total)
  24.  
  25.    elif "$$" in linea: # $$ Indica que hay un comentario
  26.        pass
  27.  
  28.    elif "clrscr()" in linea:
  29.        os.system('cls')
  30.  
  31.    elif "int" in linea: # "int" Indica que es una variable de tipo entero
  32.        varName = linea.split('"') # Nombre de la variable
  33.        varValue = linea.split('|') # Valor de la variable
  34.  
  35.  
  36.        if "putslnvar" in linea:
  37.            putslnvarFunction = linea.split('"')
  38.  
  39.            if putslnvarFunction[1] == varValue[1] :
  40.                print(varValue[1]) # envez de imprimirme el valor de la variable, que en este caso es 8, me imprime el nombre de la variable!!!!!!!!!!!!!!!!!!
  41.  
  42.            elif putslnvarFunction[1] == '':
  43.                print("is null!")
  44.  
  45.  
  46.        # print(varName[1])
  47.        # print(varValue[1])
  48.  
  49.    elif "putsln" in linea:
  50.        putslnFunction = linea.split('"') # putsln Indica que se imprimira un texto
  51.        printedText = putslnFunction[1]
  52.  
  53.        '''
  54.        if printedText == '':
  55.            print(printedtext)
  56.        else:
  57.            print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
  58.        '''
  59.  
  60.        print(printedText) # Imprime el texto que se ha introducido en la función putsln. Ejemplo: putsln "Hola!"
  61.  
  62. archivo.close()
  63.  
  64. print("Code execution finished.")
  65. os.system('pause')
  66.  

Ya me aburrí, no lo logro hacer funcionar. :-(
Si alguien sabe, puede tomar el código y arreglarlo, si quieren.
En línea

null
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemita con win avi 6.3
Multimedia
jarumi 2 2,145 Último mensaje 20 Febrero 2006, 19:37 pm
por ™Carlos.®
[Python] ¿Por qué Python 2.7.3 admite la sintaxis de Python 3? « 1 2 »
Python
Yidu 10 11,288 Último mensaje 10 Febrero 2013, 21:46 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines