|
Mostrar Mensajes
|
Páginas: [1]
|
1
|
Programación / Scripting / Hacer una operacion que esta en una string.
|
en: 13 Diciembre 2015, 21:32 pm
|
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 nos sale 10*3 El 10*3 sale de un fichero de texto llamado datos.txt que seria algo asi: 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
|
|
|
3
|
Programación / Scripting / Re: Ayuda con python (Barras de progreso).
|
en: 10 Diciembre 2015, 13:59 pm
|
1) ¿dónde está el código que intentaste de la barra? 2)hay varias formas de hacerlo ya sea en consola o en modo gráfico 3)en modo consola sería algo asi: "***********" barra vacía y "######****" barra en progreso el porcentaje de progreso se obtiene de forma matemática por ej: vacia= 0 total=90 palabras hechas=? porcentaje que se lleva es = ? x 100 / total (una simple regla de 3) 4) en modo gráfico depende que módulo uses: TK, GTK,etc
El módulo que estoy usando es Pyprind, Y el codigo al que le quiero añadir la barra es: #v2.0
#imports import time
#Variables de input car=raw_input("Caracteres a usar: ") length=int(raw_input("\nMaximo numero de caracteres: ")) name=raw_input("\nExtension y nombre de archivo: ")
#Ejecutando tic = time.clock() print ("Ejecutando, espera"); lista=[0 for x in xrange(length)] x=length-1 string=car list_of_results=[] file1=file(name,"w") while(x>-1): result="" if lista[x]==len(string)-1: for z in xrange(length): result+=string[lista[z]] lista[x]=0 x-=1 elif x==length-1: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 else: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 if x>0: x+=1 else: x=length-1 #Escribiendo en el fichero print result file1.write(result+"\n") toc = time.clock() ttn = toc - tic print ("Finalizado en "+str(ttn)+" segundos."); print ("Revisa "+str(name)+" en tu directorio."); #v2.0
|
|
|
4
|
Programación / Scripting / Re: Ayuda con python (Barras de progreso).
|
en: 9 Diciembre 2015, 22:26 pm
|
Crees que habría que cambiar el módulo o de modulo? Hola y gracias por contestar, pero sigo sin entenderlo, el codigo que use, lo puse aparte en un modulo, y no esta ahi, el codigo para la barra de progreso es (modulo.py): import sys import time
class ProgressBar(object): def __init__(self, start=0, end=10, width=12, fill='=', blank='.', format='[%(fill)s>%(blank)s] %(progress)s%%', incremental=True): super(ProgressBar, self).__init__()
self.start = start self.end = end self.width = width self.fill = fill self.blank = blank self.format = format self.incremental = incremental self.step = 100 / float(width) #fix self.reset()
def __add__(self, increment): increment = self._get_progress(increment) if 100 > self.progress + increment: self.progress += increment else: self.progress = 100 return self
def __str__(self): progressed = int(self.progress / self.step) #fix fill = progressed * self.fill blank = (self.width - progressed) * self.blank return self.format % {'fill': fill, 'blank': blank, 'progress': int(self.progress)}
__repr__ = __str__
def _get_progress(self, increment): return float(increment * 100) / self.end
def reset(self): """Resets the current progress to the start point""" self.progress = self._get_progress(self.start) return self
class AnimatedProgressBar(ProgressBar): """Extends ProgressBar to allow you to use it straighforward on a script. Accepts an extra keyword argument named `stdout` (by default use sys.stdout) and may be any file-object to which send the progress status. """ def __init__(self, *args, **kwargs): super(AnimatedProgressBar, self).__init__(*args, **kwargs) self.stdout = kwargs.get('stdout', sys.stdout)
def show_progress(self): if hasattr(self.stdout, 'isatty') and self.stdout.isatty(): self.stdout.write('\r') else: self.stdout.write('\n') self.stdout.write(str(self)) self.stdout.flush()
if __name__ == '__main__': p = AnimatedProgressBar(end=100, width=80)
while True: p + 5 p.show_progress() time.sleep(0.1) if p.progress == 100: break print #new line
y el codigo que e actualizado para que me coja de ahi la barra es: import time import sys from modulo import ProgressBar p = ProgressBar() car=raw_input("Caracteres a usar: ") length=int(raw_input("Numero maximo de caracteres: ")) name=raw_input("Introduce el nombre del fichero con formato (.txt): ") tic = time.clock() print ("Ejecutando, espera"); lista=[0 for x in xrange(length)] x=length-1 string=car list_of_results=[] file1=file(name,"w") while(x>-1): result="" if lista[x]==len(string)-1: for z in xrange(length): result+=string[lista[z]] lista[x]=0 x-=1 elif x==length-1: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 else: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 if x>0: print p+1 x+=1 else: x=length-1 file1.write(result+"\n") toc = time.clock() ttn = toc - tic print ("Completado en"+str(ttn)+" segundos."); print ("Revisa "+str(name)+" en el directorio"); es esto lo que me pides? si tucrees conveniente cambiar el codigo del modulo por otro o lo que sea... Pero gracias
|
|
|
5
|
Programación / Scripting / Re: Ayuda con python (Barras de progreso).
|
en: 9 Diciembre 2015, 17:29 pm
|
Hola y gracias por contestar, pero sigo sin entenderlo, el codigo que use, lo puse aparte en un modulo, y no esta ahi, el codigo para la barra de progreso es (modulo.py): import sys import time
class ProgressBar(object): def __init__(self, start=0, end=10, width=12, fill='=', blank='.', format='[%(fill)s>%(blank)s] %(progress)s%%', incremental=True): super(ProgressBar, self).__init__()
self.start = start self.end = end self.width = width self.fill = fill self.blank = blank self.format = format self.incremental = incremental self.step = 100 / float(width) #fix self.reset()
def __add__(self, increment): increment = self._get_progress(increment) if 100 > self.progress + increment: self.progress += increment else: self.progress = 100 return self
def __str__(self): progressed = int(self.progress / self.step) #fix fill = progressed * self.fill blank = (self.width - progressed) * self.blank return self.format % {'fill': fill, 'blank': blank, 'progress': int(self.progress)}
__repr__ = __str__
def _get_progress(self, increment): return float(increment * 100) / self.end
def reset(self): """Resets the current progress to the start point""" self.progress = self._get_progress(self.start) return self
class AnimatedProgressBar(ProgressBar): """Extends ProgressBar to allow you to use it straighforward on a script. Accepts an extra keyword argument named `stdout` (by default use sys.stdout) and may be any file-object to which send the progress status. """ def __init__(self, *args, **kwargs): super(AnimatedProgressBar, self).__init__(*args, **kwargs) self.stdout = kwargs.get('stdout', sys.stdout)
def show_progress(self): if hasattr(self.stdout, 'isatty') and self.stdout.isatty(): self.stdout.write('\r') else: self.stdout.write('\n') self.stdout.write(str(self)) self.stdout.flush()
if __name__ == '__main__': p = AnimatedProgressBar(end=100, width=80)
while True: p + 5 p.show_progress() time.sleep(0.1) if p.progress == 100: break print #new line
y el codigo que e actualizado para que me coja de ahi la barra es: import time import sys from modulo import ProgressBar p = ProgressBar() car=raw_input("Caracteres a usar: ") length=int(raw_input("Numero maximo de caracteres: ")) name=raw_input("Introduce el nombre del fichero con formato (.txt): ") tic = time.clock() print ("Ejecutando, espera"); lista=[0 for x in xrange(length)] x=length-1 string=car list_of_results=[] file1=file(name,"w") while(x>-1): result="" if lista[x]==len(string)-1: for z in xrange(length): result+=string[lista[z]] lista[x]=0 x-=1 elif x==length-1: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 else: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 if x>0: print p+1 x+=1 else: x=length-1 file1.write(result+"\n") toc = time.clock() ttn = toc - tic print ("Completado en"+str(ttn)+" segundos."); print ("Revisa "+str(name)+" en el directorio"); es esto lo que me pides? si tucrees conveniente cambiar el codigo del modulo por otro o lo que sea... Pero gracias
|
|
|
6
|
Programación / Scripting / Ayuda con python (Barras de progreso).
|
en: 8 Diciembre 2015, 23:35 pm
|
Hola, estoy haciendo un script para generar combinaciones de palabras con las letras mknusculas del abecedario y los números, me gustaría ponerle una barra de progreso en la que muestre lo que llevael programa echo Ej: si de las 100 combinaciones que tiene que hacer encuentra 50, que ponga 50%, pero soy incapaz de hacerlo, muchas gracias a todos de antemano. Aquí va el programita. import time import sys
length=int(raw_input("Numero maximo de caracteres: ")) name=raw_input("Introduce el nombre del fichero con formato (.txt): ") tic = time.clock() print ("Ejecutando, espera"); lista=[0 for x in xrange(length)] x=length-1 string="abcdefghijklnmopqrstuvwxyz1234567890" list_of_results=[] file1=file(name,"w") while(x>-1): result="" if lista[x]==len(string)-1: for z in xrange(length): result+=string[lista[z]] lista[x]=0 x-=1 elif x==length-1: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 else: for z in xrange(length): result+=string[lista[z]] lista[x]+=1 if x>0: x+=1 else: x=length-1 file1.write(result+"\n") toc = time.clock() ttn = toc - tic print ("Completado en"+str(ttn)+" segundos."); print ("Revisa "+str(name)+" en el directorio");
|
|
|
|
|
|
|