Concurs

Desa les funcions següents al fitxer concurs.py.

  1. En un concurs els participants s’enfronten dos a dos en una prova de manera que el que guanya intercanvia la seva posició a la classificació amb el que perd. Dissenya la funció canvi que donada una llista d’strings amb els noms dels participants ordenats segons la seva classificació i dos noms inclosos a la llista, modifica la llista de forma que els dos noms donats intercanvien la seva posició. Si algun dels dos noms no es troba a la llista no l’ha de modificar.

    La funció ha de passar els tests següents, com a mínim:

    >>> noms = ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> canvi (noms, 'Pol', 'Maria')
    >>> noms
    ['Pau', 'Anna', 'Maria', 'Joan', 'Pol']
    >>> noms = ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> canvi (noms, 'Pol', 'Roser')
    >>> noms
    ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    

    Nota

    Pots descarregar el fitxer amb tests test-concurs-1.txt.

  2. Dissenya la funció actualitza_classif que donada una llista amb la classificació dels participants del concurs com a l’apartat anterior i una altra llista amb els resultats d’un enfrontament de dos concursants, modifica la llista de classificació segons el resultat de l’enfrontament. La segona llista sempre tindrà quatre elements, un string amb el nom d’un concursant, un enter amb la seva puntuació, un string amb el nom del segon i un altre enter amb la seva puntuació. El concursant guanyador és el que ha obtingut la puntuació més alta. Si el guanyador ja està per davant a la classificació o els participants han empatat, la funció no haurà de fer cap modificació. Aquesta funció ha de cridar a la funció de l’apartat anterior.

    La funció ha de passar els tests següents, com a mínim:

    >>> noms = ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> actualitza_classif (noms, ['Pol',10,'Maria',5])
    >>> noms
    ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> noms = ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> actualitza_classif (noms, ['Pol',1,'Maria',10])
    >>> noms
    ['Pau', 'Anna', 'Maria', 'Joan', 'Pol']
    >>> noms = ['Pau', 'Anna', 'Maria', 'Joan', 'Pol']
    >>> actualitza_classif (noms, ['Pol',10,'Maria',1])
    >>> noms
    ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> noms = ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    >>> actualitza_classif (noms, ['Pol',10,'Maria',10])
    >>> noms
    ['Pau', 'Anna', 'Pol', 'Joan', 'Maria']
    

    Nota

    Pots descarregar el fitxer amb tests test-concurs-2.txt.

Solució

El fitxer concurs.py conté una solució.