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:
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.
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


0