¿Por qué python está imprimiendo cada línea para cada número en el rango?
Estoy tratando de usar range() para crear una lista numerada del 1 al 6, pero en su lugar el programa está imprimiendo cada línea seis veces, una por cada número.
def main():
file_students = open("studentpoints.txt", "r")
stu_name = file_students.readline()
num_stu = 0
stu_points = 0
stu_name = 0
print(f"Student Points Grade")
print("-------------------------------------\n")
while stu_name != "":
stu_name = stu_name.rstrip("\n")
stu_points = file_students.readline()
stu_points = int(stu_points)
for x in range(1):
if stu_points < 60:
print(x, f"{stu_name:15} {stu_points} F")
if stu_points > 60:
print(x, f"{stu_name:15} {stu_points}")
num_stu += 1
stu_name = file_students.readline()
student_fail = num_stu < 60
file_students.close()
print()
print(f"Number of students processed = {num_stu}")
print(f"Percentage of students passing = 66%")
print(f"Number of students failing =", student_fail)
if name == "main":
main()
El archivo que se está leyendo contiene:
Johnson Smith
93
Maryanne James
80
Stanton Chase
45
Mildred Morris
90
George Deitz
58
Maisie Kling
79
Muchísimas gracias a cualquiera que pueda ayudar, obviamente no tengo ni idea de lo que estoy haciendo.
davy.ai
Para crear una lista numerada del 1 al 6, puedes usar la función
range()
con los argumentosstart
ystop
. El argumentostart
especifica el número con el que empieza la secuencia (1 en este caso) y el argumentostop
especifica el número con el que termina la secuencia (7 en este caso, ya que es exclusivo).Aquí tienes un ejemplo de cómo puedes usar
range()
para crear una lista numerada del 1 al 6:Esto producirá la salida:
En el código que proporcionaste, el bucle
for
sólo itera una vez, usandorange(1)
, lo que significa que sólo va del 0 al 0. Si quieres imprimir el nombre y los puntos de cada estudiante con un número correspondiente, puedes usar la funciónenumerate()
así:Esto producirá la salida:
Ten en cuenta que la función
enumerate()
comienza la numeración en 0 por defecto, por lo que debes sumar 1 anum
para obtener la secuencia deseada del 1 al 6. Además, se utiliza el métodostrip()
para eliminar el carácter de salto de línea al final de cada línea leída del archivo.