Python - Porque no me muestra la edad , les dejo el codigo

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

Porque no me muestra la edad , les dejo el codigo

Publicado por lucas (10 intervenciones) el 01/05/2020 01:30:00
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
fechasDeNacimientos = ['02/05/1943','07/09/1984','10/02/1971','21/12/1967','30/01/1982','30/08/1995','18/07/1959'] #02/05/1943,07/09/1984,21/12/1967,30/08/1995
sexos = ['f','f','m','f','m','f','m']
mujeres = []
meses = []
anios = []
dias = []
anioActual =["2020"]
mesActual = ["5"]
diaActual = ["5"]
 
mujeres = []
for j in range(len(sexos)):
    if sexos[j] =="f":
        mujeres.append(fechasDeNacimientos[j])
 
for i in range(len(mujeres)):
    posicion = mujeres[i].find("/")
    dia = mujeres[i][:posicion]
    dias.append(dia)
 
for i in range(len(mujeres)):
    posicion = mujeres[i].find("/")
    mes = mujeres[i][3:5]
    meses.append(mes)
 
for i in range(len(mujeres)):
    posicion = mujeres[i].find("/")
    anio = mujeres[i][posicion+4:]
    anios.append(anio)
 
edad = []
print(dias)
print(meses)
print(anios)
 
for i in range(len(mujeres)):
    edad = anioActual[i] - anios[i]
    if (meses[i]  > mesActual[i] ) or (meses[i]  == mesActual[i]  and dias[i]  > diaActual[i] ):
        edad -=1
print(edad)
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

Porque no me muestra la edad , les dejo el codigo

Publicado por tincopasan (1082 intervenciones) el 01/05/2020 02:16:15
hola:
no te voy a corregir todo el código solo una parte:
1
2
3
4
5
6
7
8
9
10
11
for i in range(len(mujeres)):
    edades = int(anioActual[0]) - int(anios[i]) #la variable no debe tener el nombre de la lista
              # tanto año actual como año están guardados coomo cadenas y necesitas enteros
              #año actual tiene un solo elemento, así que siempre es 0
 
    if (meses[i] > mesActual[i] ) or (meses[i] == mesActual[i] and dias[i] > diaActual[i] ): #acá basicamente lo mismo
                          # estás comparando cadenas no enteros
                          #además asignas a mes actual y a día actual una posición que no existe! es solo 0
        edades -=1
 
    print(edades)
te toca buscar y corregir lo que te falta.
Ahora, es más simple guardar los datos de fecha actual como enteros.
¿Y es necesario hacerlo así?, hay formas más simples.

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
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Porque no me muestra la edad , les dejo el codigo

Publicado por tincopasan (1082 intervenciones) el 01/05/2020 10:30:07
estaba aburrido y lo resumí un poco en base a los datos que no puedo cambiar, salvo la fecha actual, que no hay razón para guardarla en un lista de un solo elemento, igual si fuese una lista no hay casi diferencia, pero es algo ilógico:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-*- coding: utf -8 -*-
fechasDeNacimientos = ['02/05/1943','07/09/1984','10/02/1971','21/12/1967','30/01/1982','30/08/1995','18/07/1959']
sexos = ['f','f','m','f','m','f','m']
anioActual ="2020"
mesActual = "5"
diaActual = "5"
edades = []
 
fechas = [fechasDeNacimientos[x] for x in range(len(sexos)) if sexos[x] == "f"]
 
for x in fechas:
    d,m,a = x[:2],x[3:5],x[-4:]
    edad = int(anioActual) - int(a)
    if int(m) <= int(mesActual):
        if int(d) < int(diaActual):
            edad-=1
    edades.append(edad)
 
print(edades)
Claro que es sin usar funciones, sino sería más corto, por si a alguien le sirve.
Saludos.
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