Python - Consulta con un programa en Python

 
Vista:
sin imagen de perfil

Consulta con un programa en Python

Publicado por Gustavo (2 intervenciones) el 15/06/2018 03:18:57
Qué tal? Soy nuevo en este foro, espero no estar infringiendo ninguna regla. Soy también bastante novato en cuanto a programación. Estaba intentando hacer un programa que me genere un vector donde cada elemento sea un diccionario. Es decir, en la posición [0] que contenga una variable del estilo alumno {'nombre': 'Carlos', 'edad': '30'} y así.
El problema surge en que no logro hacerlo. Lo que me ocurre es que el "for" que construyo me termina guardando los mismos ingresos en todas las posiciones del array!

El código es el siguiente:

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
alumno = {}
alumnadoTotal = ['']
 
def ingNombre ():
 
    print ('Ingrese el nombre del alumno: ')
    nombre = input ()
    return nombre
 
def ingDNI ():
    print ('Ingrese el DNI: ')
    dni = int ( input () )
    return dni
 
def ingNotas ():
    print ('Ingrese las notas del alumno. Ingrese * cuando haya finalizado')
 
    ingreso = ''
    notas = 0
    cantNotas = 0
 
    while ingreso != '*':
        print ('Ingrese la nota número ' + str(cantNotas+1) + ' :')
        ingreso = input ()
        if ingreso == '*':
            break
        else:
            notas = notas + int (ingreso)
            cantNotas+=1
 
    promedio = notas / cantNotas
 
    return promedio
 
def cargarAlumno():
    alumno['nombre'] = ingNombre ()
    alumno['dni'] = ingDNI ()
    alumno['notas'] = ingNotas ()
 
    return alumno
 
 
print ('Programa que carga nombre, dni y promedio de N alumnos')
cantAlumnos = int(input('Cuantos alumnos desea cargar a la lista? '))
 
 
for i in range (cantAlumnos):
    alumnadoTotal.append (cargarAlumno())
 
 
print (alumnadoTotal)

Alguna idea del por qué? También cualquier mejoría sobre el código es súper bienvenida!

Muchas gracias por cualquier información!!
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Consulta con un programa en Python

Publicado por tincopasan (1082 intervenciones) el 15/06/2018 05:33:06
hice básicamente dos modificaciones, 1) para que funcione 2)para mejor comprensión del programa:
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
#-*- coding:utf -8 -*-
global i   #para ver el número de alumno
alumnadoTotal = []
 
def ingNombre ():
    print ('Ingrese el nombre del {} alumno: '.format(i + 1))
    nombre = input ()
    return nombre
 
def ingDNI ():
    print ('Ingrese el DNI: ')
    dni = int ( input () )
    return dni
 
def ingNotas ():
    print ('Ingrese las notas del alumno. Ingrese * cuando haya finalizado')
 
    ingreso = ''
    notas = 0
    cantNotas = 0
 
    while ingreso != '*':
        print ('Ingrese la nota número ' + str(cantNotas+1) + ' :')
        ingreso = input ()
        if ingreso == '*':
            break
        else:
            notas = notas + int (ingreso)
        cantNotas+=1
 
    promedio = notas / cantNotas
 
    return promedio
 
def cargarAlumno():
    alumno = {}  #para que funcione la función correctamente
    alumno['nombre'] = ingNombre()
    alumno['dni'] = ingDNI()
    alumno['notas'] = ingNotas()
 
    return alumno
 
 
print ('Programa que carga nombre, dni y promedio de N alumnos')
cantAlumnos = int(input('Cuantos alumnos desea cargar a la lista? '))
for i in range(cantAlumnos):
    alumnadoTotal.append(cargarAlumno())
 
 
print (alumnadoTotal)


cualquier cosa preguntas o dices como fue. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Consulta con un programa en Python

Publicado por Gustavo (2 intervenciones) el 18/06/2018 00:12:26
Muchas gracias, ahora funciona a la perfección. Tengo dos preguntas que hacerte.

Por qué en la línea 6 esto está bien así?
print ('Ingrese el nombre del {} alumno: '.format(i + 1))

Nunca había visto ni el {} en el medio de una "frase" ni el .format ! Se nota que soy novato.

Gracias por todo :)
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