4 svar
372 visningar
anony123 behöver inte mer hjälp
anony123 163 – Fd. Medlem
Postad: 17 okt 2022 12:57 Redigerad: 17 okt 2022 12:59

P-uppgift

Jag ska skapa ett memory spel och det här är ett segment som genererar korten. Dock får jag list index out of range efter att jag har vänt ett antal kort. Eftersom spelplanen är 6x6 tänkte jag att 18 (0,17) element ska väljas ur filen. Den verkar även vara olöslig eftersom att det är för många unika kort för spelplanen.

def generera_bräde():
    global kort
    global spaces
    global använd
    global a
    for x in range(0,17):
        a = ' '.join(läs_fil[x])
        kort.append(a)

    for item in range(0,17):
        piece = kort[random.randint(0, len(kort) - 1)]
        spaces.append(piece)
        if piece in använd:
            använd.remove(piece)
            kort.remove(piece)
        else:
            använd.append(piece)
emilg 478
Postad: 17 okt 2022 14:44

Det är inte så konstigt att du får "index out of range".

i if-satsen tar du ibland bort element ur kort, då kan ditt slumptal ligga utanför listans storlek i en senare iteration.

anony123 163 – Fd. Medlem
Postad: 17 okt 2022 16:00
emilg skrev:

Det är inte så konstigt att du får "index out of range".

i if-satsen tar du ibland bort element ur kort, då kan ditt slumptal ligga utanför listans storlek i en senare iteration.

Jaha, jag läste fel när jag började med uppgiften och hade därför kort som bestod av siffror och då funkade koden som den skulle. Hur kan jag fixa till den så att den även fungerar för ord, ska jag ta bort listan "använd"?

Fermatrix 7841 – Fd. Medlem
Postad: 17 okt 2022 16:58

Vad motiveringen till att du använder global? Ta emot de som argument eller definiera de mha self.

anony123 163 – Fd. Medlem
Postad: 17 okt 2022 17:09
Dracaena skrev:

Vad motiveringen till att du använder global? Ta emot de som argument eller definiera de mha self.

Jag har testat lite olika funktioner så global variablerna är mest en restprodukt av mina försök, är de onödiga/påverkar koden?

Svara
Close