Hacer una operacion que esta en una string.

Iniciado por aalleexx, 13 Diciembre 2015, 21:32 PM

0 Miembros y 1 Visitante están viendo este tema.

aalleexx

Hola, mi pregunta es como puedo hacer la operación que esta almacenada en una variable que es de tipo string, por ejemplo, si la variable "multi" tiene como valor 10*3 es decir que si hacemos
print multi
nos sale 10*3
El 10*3 sale de un fichero de texto llamado datos.txt que seria algo asi:

10*3
2*9
6*3
12*10


y el codigo (sin acabar del .py) seria:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#juego.py
import math
import os.path
import linecache


if os.path.exists('datos.txt'):
adelante = 1
else:
adelante = 0
print "No existe datos.txt."
exit()

if adelante == 1:
el = 1
intentos = int(raw_input('Intentos: '))
tlineas = len(open('datos.txt').readlines())
linea = linecache.getline('datos.txt', el)
multi = str(linea)
print type(multi)
user = int(raw_input('cuanto da?: '))
#multi es elresultado de la operacion, puede ser asignada otra variable
if user == multi:
print "Acierto"
else:
print "Error"
intentos += 1

lo que necesitoes que me haga la multiplicacion de la string.

MIL GRACIAS :laugh: :laugh:

madoko

puedes hacer un linea.split("*")  para que te parta la linea en 10 y en 3, ya solo convertir a float o int y multiplicar

o puedes usar import re y mediante un findall, si ya habeis dado las expresiones regulares

Eleкtro

Para evaluar expresiones aritméticas también puedes optar por utilizar la librería numexpr.

un ejemplo:
Código (python) [Seleccionar]
>>> import numpy as np
>>> import numexpr as ne

>>> a = np.arange(1e6)
>>> b = np.arange(1e6)

>>> ne.evaluate("a + 1")   # a simple expression
array([  1.00000000e+00,   2.00000000e+00,   3.00000000e+00, ...,
         9.99998000e+05,   9.99999000e+05,   1.00000000e+06])

>>> ne.evaluate('a*b-4.1*a > 2.5*b')   # a more complex one
array([False, False, False, ...,  True,  True,  True], dtype=bool)


Saludos