Foros del Web » Programando para Internet » Python »

Ayuda

Estas en el tema de Ayuda en el foro de Python en Foros del Web. Hola,necesito crear una funcion en la que pueda guardar 1000 numeros diferentes que van del -100 al 100 en 2 ficheros diferentes. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 21/02/2011, 12:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 1
Ayuda

Hola,necesito crear una funcion en la que pueda guardar 1000 numeros diferentes que van del -100 al 100 en 2 ficheros diferentes.

Código Python:
Ver original
  1. import pickle
  2. import random
  3.  
  4. def f1(n):
  5.     for i in range (n):
  6.         x=random.randrange(-100,101)
  7.  
  8.  
  9. def f2(n):
  10.     fitx=input('Dime el nombre del fichero: ')
  11.     datos=open('fitx','wb')
  12.     pickle.dump(f1(n),datos)
  13.     datos.close()
  14.  
  15.  
  16.  
  17.  
  18. n=1000
  19. f2(n)
  20. f2(n)

el caso es que no encuentro ninguno de los 2 ficheros,¿por que?
  #2 (permalink)  
Antiguo 21/02/2011, 13:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 10 meses
Puntos: 1360
Respuesta: Ayuda

Código Python:
Ver original
  1. import os
  2.  
  3. print(os.getcwd(), fitx)
  #3 (permalink)  
Antiguo 22/02/2011, 06:50
 
Fecha de Ingreso: noviembre-2010
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Ayuda

Código Python:
Ver original
  1. import pickle
  2. import random
  3.  
  4. def f1(n):
  5.     for i in range (n):
  6.         x=random.randrange(-100,101)
  7.  
  8.  
  9. def f2(n):
  10.     fitx=input('Dime el nombre del fichero: ')
  11.     datos=open('fitx','wb')
  12.     pickle.dump(f1(n),datos)
  13.     datos.close()
  14.  
  15.  
  16. fitx=input('Dime el nombre del fichero: ')
  17. datos=open('fitx','rb')
  18. l=pickle.load(datos)
  19. print(l)
  20. datos.close()
  21.    
  22.  
  23.  
  24.    
  25.  
  26.  
  27. n=1000
  28. f2(n)
  29. f2(n)

lo estoy intentando de esta manera pero no consigo nada...
  #4 (permalink)  
Antiguo 22/02/2011, 14:07
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 10 meses
Puntos: 1360
Respuesta: Ayuda

Varias aclaraciones:
1.- Solo hay 201 valores de [-100, 100]
2.- Por lo tanto no puedes tomar 1000 valores a menos que los quieras repetidos o que los valores no sean enteros
3.- No puedes leer un archivo, si no esta creado. (O respectivamente validado con un try ... except)
4.- Las variables son diferentes de cadenas
Código Python:
Ver original
  1. import pickle
  2. import random
  3.  
  4. def f1(n):
  5.     return random.sample(range(-100, 101), n)
  6.  
  7.  
  8. def f2(n):
  9.     datos = open('fitx','wb')
  10.     pickle.dump(f1(n), datos)
  11.     datos.close()
  12.  
  13.  
  14. f2(5)
  15. datos = open('fitx','rb')
  16. l = pickle.load(datos)
  17. print(l)
  18. datos.close()
  #5 (permalink)  
Antiguo 24/02/2011, 05:07
 
Fecha de Ingreso: noviembre-2010
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Ayuda

una ultima pregunta

¿existe alguna funcion del random como el (random.sample(),etc...)que pueda ayudarme a conseguir los 1000 puntos?
  #6 (permalink)  
Antiguo 24/02/2011, 07:46
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 10 meses
Puntos: 1360
Respuesta: Ayuda

Si dependiendo de lo que quieras.
Si son con repetición entonces basta con un:
Código Python:
Ver original
  1. f1(n):
  2.     return [random.randrange(-100, 101) for _ in range(n)]

Si son con valores reales entonces es de otra manera.
  #7 (permalink)  
Antiguo 24/02/2011, 08:39
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 12 años
Puntos: 1
Respuesta: Ayuda

Hola, soy nuevo aquí, estoy para ayudar..
Estaba viendo el código que pusiste y no esta creando ningún archivo porque guardas el nombre en una variable y luego pones el nombre de la variable como un string..
se hace así..en caso de que estás trabajando con la versión 2.7 de Python
Código Python:
Ver original
  1. import pickle
  2. import random
  3.  
  4. def f1(n):
  5.     for i in range (n):
  6.         x=random.randrange(-100, 101)
  7.  
  8. def f2(n):
  9.     fitx = raw_input('Dime el nombre del fichero: ')
  10.     datos = open(fitx, 'wb')
  11.     pickle.dump(f1(n), datos)
  12.     datos.close()
  13.  
  14. n=1000
  15. f2(n)
  16. f2(n)
Si usas la versión 3.1 se hace así..
Código Python:
Ver original
  1. import pickle
  2. import random
  3.  
  4. def f1(n):
  5.     for i in range (n):
  6.         x=random.randrange(-100, 101)
  7.  
  8. def f2(n):
  9.     fitx = input('Dime el nombre del fichero: ')
  10.     datos = open(fitx, 'wb')
  11.     pickle.dump(f1(n), datos)
  12.     datos.close()
  13.  
  14. n=1000
  15. f2(n)
  16. f2(n)
  #8 (permalink)  
Antiguo 25/02/2011, 13:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Ayuda

ok gracias y ya para terminar tengo una duda

yo tengo una lista creada con una funcion y dentro de esa funcion tambien necesito que me diga cual es el numero mas alto.

Código Python:
Ver original
  1. for m in range (n):
  2.         for d in s:
  3.             k=0
  4.             if s[m]>k:
  5.                 print(s[m])
  6.                 s[m]=k
  7.             return k

donde n es el numero de los que hay en mi lista y s la lista

el problema es que siempre me devuelve 0 ¿porque? como lo soluciono?
  #9 (permalink)  
Antiguo 26/02/2011, 20:48
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 12 años
Puntos: 1
Respuesta: Ayuda

No entiendo que es lo que estás haciendo en la función...
Primero pones
Código Python:
Ver original
  1. for d in s
y luego dentro del for vuelves a usar la s cuando tendrías que usar la d. Qué es lo que quieres hacer??
Segundo, dentro del for preguntas si el elemento es mayor que cero y luego imprimes y le asignas 0.
Y por ultimo, la k la asignaste a 0 y luego retornas la k. Es por eso que siempre retorna el 0.
  #10 (permalink)  
Antiguo 26/02/2011, 21:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 17 años, 10 meses
Puntos: 1360
Respuesta: Ayuda

Existe una función max que te saca el máximo.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.