Python - Ejercicio basico de python

<<>>
 
Vista:

Ejercicio basico de python

Publicado por Gemima (1 intervención) el 26/04/2025 00:43:27
Hola, esperando que alguien me ayude con este problema porfavor:

7.2 Escribir un programa que solicita un nombre de archivo, a continuación, abre el archivo y lee a través del archivo, en busca de líneas de la forma:
X-DSPAM-Confidence: 0.8475
Cuenta estas líneas y extrae los valores de coma flotante de cada una de las líneas y calcula el promedio de esos valores y produce una salida como se muestra a continuación. No uses la función sum () o una variable llamada sum en tu solución.
Puedes descargar los datos de muestra en http://es.py4e.com/code3/mbox-short.txt para probar la función, ingrese mbox-short.txt como el nombre del archivo.

el resultado debe ser:
Average spam confidence: 0.750718518519

mi codigo es el siguiente;
fname = input("Ingrese el nombre del archivo: ")
fh=open(fname)
inp=fh.read()
count = 0
total = 0
for linea in fh:
if linea.startswith("X-DSPAM-Confidence:"):
punto = linea.find(":")
numero = float(linea[20:26])
count=count+1
total=total+numero
promedio=total/count
print("Average spam confidence:", promedio)

yo solo quiero imprimir el ultimo valor de la iteraciones.
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

Ejercicio basico de python

Publicado por tincopasan (1086 intervenciones) el 26/04/2025 07:59:03
hola:
bueno, ya casi lo tenés, hice solo unos cambios y le doy la sangría correcta.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
fname = input("Ingrese el nombre del archivo: ")
with open(fname) as fh:  # uso with porque cuando termine cierra el archivo
  count = 0
  total = 0
  for linea in fh:
    if linea.startswith("X-DSPAM-Confidence:"):
        punto = linea.find(":")
        numero = float(linea[20:26])
        count += 1
        # es un poco más corto de escribir y parece más python, se puede como estaba
        total += numero
 
promedio = total/count
print(f"Average spam confidence: {round(promedio, 12)}")
#le di formato a la cadena y redondeo la parte decimal para que de el mismo resultado buscado

pocos cambios y listo.
consejo: hay un tag </> Código para que veamos mejor que indentación estás usando.
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