2011-08-11 9 views
6

¿Cómo puedo modificar este código para hacer 3 listas con 5 elementos en cada uno en lugar de como está ahora; 3 listas con 5/10/15 elementos?Lista anexada en la pregunta de bucle

import random 

y = [] 

def autoSolve(): 
    for i in range(5): 
     z = random.randrange(1, 10) 
     y.append(z) 
    print(y, end="") 

for i in range(3): 
    print("number", i + 1,) 
    autoSolve() 
    print() 
+0

¿por qué cree que tiene tres listas? Porque la impresión se llama tres veces? – SingleNegationElimination

+1

¿Es esta tarea? – 6502

+2

Esto no es tarea, no. – Sergei

Respuesta

10

Mover y = [] en el método Autosolve, de manera que se restablece en cada llamada.

def autoSolve(): 
    y = [] 
    for i in range(5): 
     z = random.randrange(1, 10) 
     y.append(z) 
    print(y, end="") 
0

Mover el y = [] al principio de autoSolve.

1

Está imprimiendo la misma lista y cada vez.

y comienza vacío.

La primera iteración de su bucle for, y termina con 5 elementos.

La segunda iteración, y.append hace que aumente a 10 elementos.

Para evitar esto, ponga la línea

y=[] 

dentro del método autoSolve().

0
import random 

y = [] 

def autoSolve(): 
    x = [] 
    for i in range(5): 
     z = random.randrange(1, 10) 
     x.append(z) 
    print(x, end="") 
    return x 

for i in range(3): 
    print("number", i + 1,) 
    y.append(autoSolve()) 
    print() 
+0

Esta es una respuesta bastante confusa para él si no entiende las variables globales en Python. – agf

+0

Tienes toda la razón. Cambié el nombre de la variable. –

-1

Creo que esta sería la solución adecuada para este problema.

import random 

y = [] 

def autoSolve(): 
    x = [] 
    for i in range(5): 
     z = random.randrange(1, 10) 
     x.append(z) 
    y.append(x) 
    print(y, end="") 

for i in range(3): 
    print("number", i + 1,) 
    autoSolve() 
    print() 

aquí emiten generará ya que esto [[], [], []] formiato una lista con 3 lista interna del elemento 5

Cuestiones relacionadas