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:
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
Para evaluar expresiones aritméticas también puedes optar por utilizar la librería numexpr.
- https://code.google.com/p/numexpr/
un ejemplo:
>>> 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