Pedir equipos y puntuaciones, guardarlos y mostrar el resultado (Python)

Iniciado por ThePaquet1, 30 Enero 2021, 22:54 PM

0 Miembros y 1 Visitante están viendo este tema.

ThePaquet1

Hola, he intentado hacer un programa que funciona así:
Pido partidos de una liga de pádel en este formato: {NombreEquipoA} {SetsGanadosEquipoA} {NombreEquipoB} {SetsGanadosEquipoB}
Todo eso se escribe en la misma línea, pero cada partido se escribe en una línea diferente. En cada partido, el equipo con más sets gana. Cada vez que un equipo gana un partido, suman 3 puntos, y si pierde, 0.
Tengo que guardar de alguna forma los nombres de todos los equipos que escriba porque un equipo puede aparecer en diferentes partidos, además como un equipo puede aparecer varias veces también tengo que guardar e ir actualizando su puntuación (si han ganado 1 partido, tendrá 3 puntos, pero si luego gana otro partido, aumentará a 6 puntos).
Ojo, tengo que introducir todo el rato partidos hasta que introduzca la palabra FIN, y en ese momento mostrará los resultados con el ganador (que será el equipo con más puntos), y luego mostrará un ranking de puntuaciones de los equipos.

Ya que es algo lioso, os pongo un ejemplo: voy a introducir 3 partidos y luego la palabra FIN, y entonces mostrará los resultados:

Buenardos 1 Malardos 4    //Como el equipo "Malardos" tiene más sets, gana el partido y obtiene 3 puntos.

Picasos 2 Redbull 3    //Gana el equipo "Redbull", por lo que obtiene 3 puntos

Malardos 4 Camisetas 3    //Vuelve a ganar el equipo Malardos, por lo que ahora tienen 6 puntos

FIN //Al introducir esto, el programa deja de pedirme partidos y muestra los resultados

Equipo ganador: "Malardos"
Resultados de la liga:
Malardos - 6 puntos
Redbull - 3 puntos
Buenardos - 0 puntos //El ranking es de 3, o sea que no es necesario poner todos los equipos con 0 puntos

Y básicamente ese sería el programa, poner varios partidos hasta poner FIN, los equipos ganan puntos al ganar partidos, y luego mostrar el resultado con un ranking de 3 equipos como máximo.

Esto es lo que tengo de código:
while equipo1 != FIN:
    equipo1, puntos1, equipo2, puntos2 = input().split()
    if puntos1 > puntos2
        puntuacionequipo1 = 3
    else:
        puntuacionequipo2 = 3
else:
    print("Equipo ganador:")
    print("Resultados de la liga:")


Básicamente lo que tengo es muy poco, porque por más que busco en Google (tanto en inglés como en español), no comprendo como funciona el while en Python para que me pida constantemente equipos hasta poner FIN, y tampoco sé como poder guardar los nombres de los equipos ni sumarles puntos cuando ganan un partido para luego poder hacer un ranking. Y bueno, en la parte donde imprimo los resultados tampoco he escrito ningún equipo porque para empezar no sé cómo seleccionar al equipo ganador si no sé como añadirles puntos cuando ganan partidos.

Sé que estoy pidiendo mucha ayuda, pero llevo desde el jueves buscando e informándome sobre Python y no consigo realizar este programa, a si que si alguien pudiera ayudarme estaría increíblemente agradecido.

crazykenny

#1
Cita de: ThePaquet1 en 30 Enero 2021, 22:54 PM
Hola, he intentado hacer un programa que funciona así:
Pido partidos de una liga de pádel en este formato: {NombreEquipoA} {SetsGanadosEquipoA} {NombreEquipoB} {SetsGanadosEquipoB}
Todo eso se escribe en la misma línea, pero cada partido se escribe en una línea diferente. En cada partido, el equipo con más sets gana. Cada vez que un equipo gana un partido, suman 3 puntos, y si pierde, 0.
Tengo que guardar de alguna forma los nombres de todos los equipos que escriba porque un equipo puede aparecer en diferentes partidos, además como un equipo puede aparecer varias veces también tengo que guardar e ir actualizando su puntuación (si han ganado 1 partido, tendrá 3 puntos, pero si luego gana otro partido, aumentará a 6 puntos).
Ojo, tengo que introducir todo el rato partidos hasta que introduzca la palabra FIN, y en ese momento mostrará los resultados con el ganador (que será el equipo con más puntos), y luego mostrará un ranking de puntuaciones de los equipos.

Ya que es algo lioso, os pongo un ejemplo: voy a introducir 3 partidos y luego la palabra FIN, y entonces mostrará los resultados:

Buenardos 1 Malardos 4    //Como el equipo "Malardos" tiene más sets, gana el partido y obtiene 3 puntos.

Picasos 2 Redbull 3    //Gana el equipo "Redbull", por lo que obtiene 3 puntos

Malardos 4 Camisetas 3    //Vuelve a ganar el equipo Malardos, por lo que ahora tienen 6 puntos

FIN //Al introducir esto, el programa deja de pedirme partidos y muestra los resultados

Equipo ganador: "Malardos"
Resultados de la liga:
Malardos - 6 puntos
Redbull - 3 puntos
Buenardos - 0 puntos //El ranking es de 3, o sea que no es necesario poner todos los equipos con 0 puntos

Y básicamente ese sería el programa, poner varios partidos hasta poner FIN, los equipos ganan puntos al ganar partidos, y luego mostrar el resultado con un ranking de 3 equipos como máximo.

Esto es lo que tengo de código:
while equipo1 != FIN:
   equipo1, puntos1, equipo2, puntos2 = input().split()
   if puntos1 > puntos2
       puntuacionequipo1 = 3
   else:
       puntuacionequipo2 = 3
else:
   print("Equipo ganador:")
   print("Resultados de la liga:")


Básicamente lo que tengo es muy poco, porque por más que busco en Google (tanto en inglés como en español), no comprendo como funciona el while en Python para que me pida constantemente equipos hasta poner FIN, y tampoco sé como poder guardar los nombres de los equipos ni sumarles puntos cuando ganan un partido para luego poder hacer un ranking. Y bueno, en la parte donde imprimo los resultados tampoco he escrito ningún equipo porque para empezar no sé cómo seleccionar al equipo ganador si no sé como añadirles puntos cuando ganan partidos.

Sé que estoy pidiendo mucha ayuda, pero llevo desde el jueves buscando e informándome sobre Python y no consigo realizar este programa, a si que si alguien pudiera ayudarme estaría increíblemente agradecido.


Hola, ThePaquet1.

Hace tiempo hice un programa similar en Blitz3D (un compilador basado en Basic) para sacar estadísticas de los partidos, y, bueno, lo que hice fue guardar los resultados de los partidos en una matriz de dos dimensiones para luego poder realizar tareas como la que comentas.

Como nota adicional:

Sobre la "segunda" dimensión de esta debería tener 4 valores; un valor para cada equipo y los otros dos para la puntuación de cada equipo.
Sobre la primera dimensión de matriz; El valor que debe tener es igual al numero de partidos disputados.


Por ultimo, el resto seria utilizar el comando input para añadir los nombres de los equipos y sus resultados.

Espero poder ser de ayuda con la duda que has expuesto en este tema, o, almenos, en el sentido de aportar una idea a la hora de realizar el código.

Muchas gracias por vuestra atención, y, bueno, saludos.
A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
http://informaticayotrostemas.blogspot.com.es/2013/12/situacion-de-la-educacion-actual-en.html
https://informaticayotrostemas.blogspot.com/

tincopasan

#2
ni loco te hago todo el código, si puedo ayudarte y seguro muchos otros, pero tenés que hacer aunque sea de a poco lo que esperas. Suena feo, pero no debes ser muy bueno buscando sino encuentras lo que pides, hay cientos de tutoriales y manuales de python.
Vamos con lo de "fin" y while:

Código (python) [Seleccionar]

equipo1 = ""  #debe estar declarado antes del while
while equipo1 != "FIN": #fin es una cadena debe ir entre comillas dobles o simples como tal
   equipo1 = input(">")
   #todas las líneas que siguen tienen algo mal en general
   """equipo1, puntos1, equipo2, puntos2 = input(">>").split() #esto dará error si solo ingresa FIN
   if puntos1 > puntos2
       puntuacionequipo1 = 3
   else:
       puntuacionequipo2 = 3
else:
   print("Equipo ganador:")
   print("Resultados de la liga:")"""


en fin, de apoco si intentas te ayudaran, sino espera que alguien que este muy aburrido te haga todo el código, que tampoco es tan díficil.

ThePaquet1

Cita de: crazykenny en 30 Enero 2021, 23:12 PM

Hola, ThePaquet1.

Hace tiempo hice un programa similar en Blitz3D (un compilador basado en Basic) para sacar estadísticas de los partidos, y, bueno, lo que hice fue guardar los resultados de los partidos en una matriz de dos dimensiones para luego poder realizar tareas como la que comentas.

Como nota adicional:

Sobre la "segunda" dimensión de esta debería tener 4 valores; un valor para cada equipo y los otros dos para la puntuación de cada equipo.
Sobre la primera dimensión de matriz; El valor que debe tener es igual al numero de partidos disputados.


Por ultimo, el resto seria utilizar el comando input para añadir los nombres de los equipos y sus resultados.

Espero poder ser de ayuda con la duda que has expuesto en este tema, o, almenos, en el sentido de aportar una idea a la hora de realizar el código.

Muchas gracias por vuestra atención, y, bueno, saludos.
Hola, ¡muchísimas gracias por tu respuesta!
He intentado buscar en Google cómo crear una matriz bidimensional y no sólo no he encontrado como crear una añadiendo nombres (sólo he encontrado creándolas con números), sino que tampoco he encontrado cómo crearla vacía e ir llenándola a medida que escribo equipos y estos ganan puntos. Al menos he entendido que eso es lo que quieres que haga para poder guardar los equipos y sus puntos.

Cita de: tincopasan en 31 Enero 2021, 00:56 AM
ni loco te hago todo el código, si puedo ayudarte y seguro muchos otros, pero tenés que hacer aunque sea de a poco lo que esperas. Suena feo, pero no debes ser muy bueno buscando sino encuentras lo que pides, hay cientos de tutoriales y manuales de python.
Vamos con lo de "fin" y while:

Código (python) [Seleccionar]

equipo1 = ""  #debe estar declarado antes del while
while equipo1 != "FIN": #fin es una cadena debe ir entre comillas dobles o simples como tal
   equipo1 = input(">")
   #todas las líneas que siguen tienen algo mal en general
   """equipo1, puntos1, equipo2, puntos2 = input(">>").split() #esto dará error si solo ingresa FIN
   if puntos1 > puntos2
       puntuacionequipo1 = 3
   else:
       puntuacionequipo2 = 3
else:
   print("Equipo ganador:")
   print("Resultados de la liga:")"""


en fin, de apoco si intentas te ayudaran, sino espera que alguien que este muy aburrido te haga todo el código, que tampoco es tan díficil.
¡Muchísimas gracias a ti también por tu respuesta!
Gracias a ese código ya he entendido como poder usar correctamente el while para que cuando ponga FIN pare de pedirme partidos, pero ahora tengo otra duda. Yo he aprendido a poner diferentes variables en la misma frase mediante este código:
equipo1, sets1, equipo2, sets2= input().split()
La cosa es que con el código que me has enseñado no sé cómo meterlo, ya que tú en el input sólo pones el equipo1, y yo necesito meter en la misma fila los dos equipos con sus respectivos sets y luego sacar de ahí un ganador del partido para sumarle los tres puntos. Si intento agregar en tu input los dos equipos y los sets de cada uno pero luego sólo pongo FIN, me aparece el error "ValueError: not enough values to unpack (expected 4, got 1)", que es el error que me has dicho que iba a aparecer si sólo ponía FIN. ¿Alguna idea?

crazykenny

Cita de: ThePaquet1 en 31 Enero 2021, 12:44 PM
Hola, ¡muchísimas gracias por tu respuesta!
He intentado buscar en Google cómo crear una matriz bidimensional y no sólo no he encontrado como crear una añadiendo nombres (sólo he encontrado creándolas con números), sino que tampoco he encontrado cómo crearla vacía e ir llenándola a medida que escribo equipos y estos ganan puntos. Al menos he entendido que eso es lo que quieres que haga para poder guardar los equipos y sus puntos.
¡Muchísimas gracias a ti también por tu respuesta!
Gracias a ese código ya he entendido como poder usar correctamente el while para que cuando ponga FIN pare de pedirme partidos, pero ahora tengo otra duda. Yo he aprendido a poner diferentes variables en la misma frase mediante este código:
equipo1, sets1, equipo2, sets2= input().split()
La cosa es que con el código que me has enseñado no sé cómo meterlo, ya que tú en el input sólo pones el equipo1, y yo necesito meter en la misma fila los dos equipos con sus respectivos sets y luego sacar de ahí un ganador del partido para sumarle los tres puntos. Si intento agregar en tu input los dos equipos y los sets de cada uno pero luego sólo pongo FIN, me aparece el error "ValueError: not enough values to unpack (expected 4, got 1)", que es el error que me has dicho que iba a aparecer si sólo ponía FIN. ¿Alguna idea?


Hola, ThePaquet1.

Por mi parte, quisiera añadir dos cosas mas a la idea que he comentado y a modo de "pistas" para realizar tu código;

-La primera, crear una matriz que contenga una lista con los nombres de los equipos.
-La segunda, es que la matriz de los resultados debería almacenar solo numeros y de la siguiente manera; los dos primeros números/valores son las posiciones de los equipos en la lista de equipos, el tercer numero/valor son los puntos que ha conseguido el primer equipo y el ultimo numero/valor los puntos del segundo equipo.

Por ultimo, quisiera añadir un par de enlaces que he encontrado con una búsqueda rápida y que, bueno, creo que te pueden resultar útiles para realizar tu código;


https://www.snakify.org/es/lessons/two_dimensional_lists_arrays/

https://www.hektorprofe.net/curso/introduccion-analisis-datos-python-numpy/arrays-2-dimensiones

Muchas gracias por vuestra atención, y, bueno, saludos.
A nivel personal, lo que me da mas miedo no son los planteamientos y acciones individuales, sino las realizadas en grupo, ya que estas ultimas pueden acabar con consecuencias especialmente nefastas para todos.
Se responsable, consecuente y da ejemplo.
http://informaticayotrostemas.blogspot.com.es/2013/12/situacion-de-la-educacion-actual-en.html
https://informaticayotrostemas.blogspot.com/

tincopasan

#5
Citar
La cosa es que con el código que me has enseñado no sé cómo meterlo, ya que tú en el input sólo pones el equipo1, y yo necesito meter en la misma fila los dos equipos con sus respectivos sets y luego sacar de ahí un ganador del partido para sumarle los tres puntos. Si intento agregar en tu input los dos equipos y los sets de cada uno pero luego sólo pongo FIN, me aparece el error "ValueError: not enough values to unpack (expected 4, got 1)", que es el error que me has dicho que iba a aparecer si sólo ponía FIN. ¿Alguna idea?


claro, ¿pero que has intentado ya sabiendo que te da error.?

CitarHe intentado buscar en Google cómo crear una matriz bidimensional y no sólo no he encontrado como crear una añadiendo nombres (sólo he encontrado creándolas con números), sino que tampoco he encontrado cómo crearla vacía e ir llenándola a medida que escribo equipos y estos ganan puntos. Al menos he entendido que eso es lo que quieres que haga para poder guardar los equipos y sus puntos.

bueno , poné lo que has encontrado o hecho y vemos como se soluciona

Edito: he visto está misma pregunta en otro foro donde participo, evidentemente el usuario no tiene intenciones de intentar nada, algún moderador debería cerrar el post.