"Estaba haciendo el siguiente ejercicio:
Una gimnasta puede obtener una puntuación de entre 1 y 10 de cada juez.
Imprime una serie de oraciones, "Un juez puede darle _ puntos a una gimnasta". No se preocupe si su primera oración dice "Un juez puede darle 1 punto a una gimnasta". Sin embargo, obtienes 1000 puntos de Internet adicionales si puedes usar un bucle for y tienes la gramática correcta.
Mi código es este:
scores = (tuple(range(1,11))) for score in scores: print (f'A judge can give a gymnast {score} points.')Y mi salida, por supuesto, fue:
Un juez puede dar 1 punto a una gimnasta.
Un juez puede dar 2 puntos a una gimnasta.
Un juez puede dar 3 puntos a una gimnasta.
Un juez puede dar 4 puntos a una gimnasta.
Un juez puede dar 5 puntos a una gimnasta.
Un juez puede dar 6 puntos a una gimnasta.
Un juez puede dar 7 puntos a una gimnasta.
Un juez puede dar 8 puntos a una gimnasta.
Un juez puede dar 9 puntos a una gimnasta.
Un juez puede dar 10 puntos a una gimnasta.
La pregunta es: ¿Cómo puedo corregir la gramática en mi ciclo? Quiero decir, cuando es "1 punto", ¿cómo puedo hacer que mi ciclo diga "1 punto" y no "1 punto" y para los demás puntajes mantenga los "puntos"?
Agrega condicionalmente la s a la cadena:
print(f'A judge can give a gymnast {score} point{"s" if score > 1 else ""}.')Todo lo que necesita es una instrucción if para comprobar la puntuación
scores = (tuple(range(1,11))) for score in scores: if (score == 1): print (f'A judge can give a gymnast {score} point.') else: print (f'A judge can give a gymnast {score} points.')Aquí hay otra forma de hacerlo. La respuesta anterior puede (no sé) ser más eficiente, en mi opinión, esto es más legible para futuros desarrolladores.
scores = (tuple(range(1,11))) for score in scores: if score == 1: print ('A judge can give a gymnast 1 point.') else: print (f'A judge can give a gymnast {score} points.')Concluyo por la simplicidad de este problema que eres bastante nuevo en Python y la programación en general.
Debería echar un vistazo a conceptos fundamentales como el control de flujo y encontrar una solución no debería ser nada difícil.
https://docs.python.org/3/tutorial/controlflow.html
Pero aún así, para darle una respuesta concreta a la pregunta, simplemente puede agregar una declaración if a su ciclo como esta:
scores = (tuple(range(1,11))) for score in scores: output = f'A judge can give a gymnast {score} point' if score > 1: output += "s" print(f"{output}.")Una forma sencilla sería usar el formato de cadena de python para representar condicionalmente el s
print(f'A judge can give a gymnast {score} point{"s" if score > 1 else ""}.')