Python - Manejo de listas

 
Vista:
sin imagen de perfil
Val: 8
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Manejo de listas

Publicado por Humberto (5 intervenciones) el 05/02/2017 07:06:14
Me resulta un poco dificil explicar lo que necesito, pero trataré de ser breve y consizo, espero alguien pueda ayudarme

tengo un programa que pregunta para generar numeros pseudoaleatorios por el metodo de medios cuadrados trata sobre un programa que pide al usuario cuantos digitos debe tener un numero y cuantos numeros quiere generar.

Suponiendo que el usuario elige un numero de 3 digitos, y generar 5 numeros , el programa con ayuda del random me indica un numero de 3 digitos. este numero será mi primer numero aleatorio, pero para generar los otros 4 necesito obtener el cuadrado del primer numero aleatorio y de su resultado obtener los 3 digitos centrales.

Todo hasta ahi lo tengo echo, con una funcion aplico tanto el cuadrado del numero y con otra funcion obtengo los digitos centrales, despues de esto, el numero central obtenido del cuadrado del primer numero aleatorio me servira para volver a aplicarle el cuadrado y volver a obtener los digitos centrales para sucesivamente generar al final 5 numeros aleatorios con este metodo, el caso es que no puedo hacer una lista con este proposito.

el codigo que llevo echo es este:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import random
 
# Metodo Cuadrados centrales
 
# Listas a utilizar
lista_r = []   #Lista que almacena las semillas generadas
lista_r_cuadrado=[]  # Lista que almacena los cuadrados de las semillas
Val = []     # Valor central de cada cuadrado (numeros de k digitos)
limite = []  # Cadena de digitos para establecer limite de la primera semilla
 
 
# Funcion para encontrar los numeros centrales
def central_number(num):
	str_num = str(num)
	sobrantes = len(str_num) - k
 
	if sobrantes >= 0:
		separa_ultimo_elemento = True
		for sobrante in range( 0, sobrantes ):
			if separa_ultimo_elemento:
				str_num = str_num[0:-1]
			else: # Separa el primer elemento
				str_num = str_num[1: ]
 
			separa_ultimo_elemento = not separa_ultimo_elemento
 
		return int( str_num )
 
# Funcion que calcula el cuadrado de la semilla
def cuadrado(num):
	return int(num*num)
 
 
# Variables definidas por el usuario
k = int((raw_input("Digitos del numero semilla:  "))) #Recomencadion 3
rango = int((raw_input("Ingrese la cantidad de numeros pseudoaleatorios:  ")))
 
# Generacion de la semilla principal
for i in range(k):
	limite.append('9')
lim = int("".join(limite))
aleatorio = random.randrange(0,lim)
lista_r.append(aleatorio)
#Val.append(aleatorio)
lista_r_cuadrado = map(cuadrado,map(central_number, lista_r))
 
 
# En esta parte intento crear los digitos de forma continua dependiendo de cuantos numeros quiere el usuario
for i in range(rango-1):
	Val.append(int(lista_r[i][i] ))
 
for i in range(1,rango):
	lista_r.append(map(central_number,lista_r_cuadrado ))
	lista_r_cuadrado.append(map(cuadrado,lista_r[1] ))
 
 
print '\n'
print "Valor de la semilla principal:",aleatorio
print lista_r
print Val
print lista_r_cuadrado


Al final requiero de 3 listas, lista_r muestra los numeros de 3 digitos que se obtienen del centro de los numeros en la lista_r_cuadrado, la lista Val, siemplemente la pretendo usar como una lista limpia de los numeros centrales que se obtienen de los numeros cuadrados.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Manejo de listas

Publicado por xve (1646 intervenciones) el 06/02/2017 10:45:41
Hola Humberto, nos puedes compartir como lo has resuelto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Manejo de listas

Publicado por Humberto (5 intervenciones) el 06/02/2017 19:27:08
claro, mira, no se si el problema quedo muy claro, pero necesitaba alguna forma de hacer iteraciones que me guarden en dos listas los numeros pseudoaleatorios , una lista Val que contenga los numeros de k digitos y otra con los cuadrados de dichos numeros de la lista Val.

modifique llos for que puse en las lineas 49 y 52 por estas lineas:

1
2
3
4
5
6
7
for i in range(1,rango):
	del lista_r[:]
	lista_r.extend(map(central_number, lista_r_cuadrado))
	Val.extend(lista_r)
	del lista_r_cuadrado[:]
	lista_r_cuadrado.extend(map(cuadrado,map(central_number,lista_r)))
	cuadrados.extend(lista_r_cuadrado)

Pero la verdad es que sigo teneiendo problemas, ya que al ejecutar el programa, muchas veces no me da la respuesta que busco, me marca un error que ya postee en otro tema: https://goo.gl/ISV9lT
solo si insisto inclusive con las mismas variables de entrada me da el resultado que busco, solo puedo pensar que se debe a alguna incompatibilidad a la hora de generar el numero random, tal vez porque sea un numero no multiplicativo que de alguna manera en el proceso genere digitos diferentes para cada numero de 3 digitos ... la verdad es que hasta ahi quede estancado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Manejo de listas

Publicado por xve (1646 intervenciones) el 07/02/2017 07:44:25
Hola Humberto, he probado a ejecutar tu código para ver si encuentro exactamente que esta pasando, y añadiendo este código entre las lineas que comentas, me da error:
Traceback (most recent call last):
File "x.py", line 55, in <module>
cuadrados.extend(lista_r_cuadrado)
NameError: name 'cuadrados' is not defined
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha disminuido su posición en 10 puestos en Python (en relación al último mes)
Gráfica de Python

Manejo de listas

Publicado por Humberto (5 intervenciones) el 07/02/2017 19:31:55
creas una nueva lista vacia de nombre cuadrados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar