8 svar
115 visningar
Wille2006 behöver inte mer hjälp
Wille2006 180
Postad: 24 maj 19:00 Redigerad: 24 maj 19:13

Tipsrunda / Quiz

Uppgift:

 

Min kod:

Jag behöver alltså inte hjälp med HEELA uppgiften utan bara en bit, I högra delen av min skärmdump ser ni QA.txt, där strukturen är sådan:

Rad 1 = fråga

Rad 2 till 4 = svarsalternativ

Rad 5 = Det svarsalternativ som är rätt.

 

Jag behöver hjälp med att få ut mitt rätta svar från QA.txt filen, dvs rad 5,11 och 17 i txt filen. Dessa rätta svar måste jag sedan göra om till en Integer som jag sedan kan jämföra min input med, hur gör jag detta?

 

Jag har fått ut svarsalternativen i min terminal, men när jag trycker in ett svar så får jag error, se bild nedan: 

Posta gärna din kod formaterad som programkod istället för en bild. Då blir det lättare att felsöka. Nu får du iofs en rätt bra ledtråd då python klagar på att den inte känner igen ”toint” i din kod. Sök felet där. 

Wille2006 180
Postad: 24 maj 20:02 Redigerad: 24 maj 20:04

g

Wille2006 180
Postad: 24 maj 20:04
sictransit skrev:

Posta gärna din kod formaterad som programkod istället för en bild. Då blir det lättare att felsöka. Nu får du iofs en rätt bra ledtråd då python klagar på att den inte känner igen ”toint” i din kod. Sök felet där. 

@sictransit, "toint" var en annan metod jag använde förut men jag glömde ta bort den sista delen av den koden därav står det fel där men detta är nu borttaget från koden, toint står då för to-integer, men den metoder som jag höll på med fungerade tyvärr inte heller. 

 

Jag förstår hur man får ut index från en txt fil, men hur får jag ut innehållet ur det indexet från txt filen? Jag har googlat och frågat ChatGPT men har inte kommit fram till något. 

Posta din kod. Posta din fil. Enklare så.

Jag kan köra din kod i huvudet, men det går så mycket snabbare om python på min burk kan göra det istället. 

Wille2006 180
Postad: 24 maj 22:24 Redigerad: 24 maj 23:44
sictransit skrev:

Posta din kod. Posta din fil. Enklare så.

Jag kan köra din kod i huvudet, men det går så mycket snabbare om python på min burk kan göra det istället. 

def openfile():
    with open("qa.txt", "r", encoding="UTF-8") as file:
        everyline = file.readlines()
        nylista = []
        for line in everyline:
            rensad = line.strip()
            nylista.append(rensad)
    return nylista


def rattellerfel(lines, indices):
    for i in range(3):  # Loopar igenom alla frågor (3 frågor)
        fråga_index = 0 + i * 6  # Indexet för varje fråga
        korrekt_svar_index = 5 + i * 6  # Indexet för det korrekta svaret, dvs line 5, 11, 17
        queans(lines, fråga_index, korrekt_svar_index)
        rattsvar(lines, korrekt_svar_index)  # Skickar hela listan och det korrekta svarets index

    for index in indices:
        print("Innehåll på rad", index + 1, ":", rattsvar(lines, index))

def rattsvar(lista, korrekt_svar_index):
    if korrekt_svar_index < len(lista):
        rattasvaret = lista[korrekt_svar_index]
        print(f"Rätt svar är: {rattasvaret}")
        return rattasvaret  
    else:
        print("Index out of range")



def queans(lista, fråga_index, korrekt_svar_index):
    print(lista[fråga_index])  # Printar frågan
    
    # Printar svarsalternativen
    listaforsvarsalternativen = []
    for k in range(3):
        svarsalternativ = lista[fråga_index + k + 1]  # Hämtar svarsalternativen
        listaforsvarsalternativen.append(svarsalternativ)  # Lägg till i listan
        print(svarsalternativ)  # Printar svarsalternativen

    
    

    # Kollar om din gissning är rätt
    correct_ans = lista[korrekt_svar_index].strip()
    userans = int(input("Välj ett svarsalternativ (ange numret): ").strip())
    if userans == correct_ans:
        print("Rätt svar!")
    else:
        print(f"Fel svar, rätt svar är: {correct_ans}")

def main():
    lines = openfile()
    indices = [4, 10, 16]  # Specifierade index 4, 10, och 16
    rattellerfel(lines, indices)

main()


# DETTA NEDAN ÄR qa.txt:

Vad är detta för datatyp? x = 6
1. Integer
2. String
3. Lista
1

Vilken färg har den övre delen av frankrikes flagga?
1. Blå 
2. Röd
3. Vit
2

Vilket planet är närmast solen?
1. Venus
2. Mars
3. Markurius
3

Jag får ditt program att fungera om jag rättar två rader:

korrekt_svar_index = 5 + i * 6 # Indexet för det korrekta svaret, dvs line 5, 11, 17

Index för en lista i python är 0-baserad, så raderna 5, 11, 17 har index 4, 10, 16.

userans = int(input("Välj ett svarsalternativ (ange numret): ").strip())

Du får en string (förvisso innehållande ett tal) från din fil. Du får även en string från input().

Jämför dem som de är.

Om du konverterar den ena till en int så kontrollerar du om 1=='1', vilket är False.

Wille2006 180
Postad: 25 maj 12:05 Redigerad: 25 maj 12:10
sictransit skrev:

Jag får ditt program att fungera om jag rättar två rader:

korrekt_svar_index = 5 + i * 6 # Indexet för det korrekta svaret, dvs line 5, 11, 17

Index för en lista i python är 0-baserad, så raderna 5, 11, 17 har index 4, 10, 16.

userans = int(input("Välj ett svarsalternativ (ange numret): ").strip())

Du får en string (förvisso innehållande ett tal) från din fil. Du får även en string från input().

Jämför dem som de är.

Om du konverterar den ena till en int så kontrollerar du om 1=='1', vilket är False.

Så i i korrekt_svar_index så bör det vara:

korrekt_svar_index = 4 + i *6

för att indexet börjar på fyra då rad 5=index4 eftersom rad 1=index0?

 

Jag förstår hur index-systemet fungerar, däremot får jag bara ut indexet vilket i princip är irrelevant. Jag vill få ut innehållet på index 4,10,16, och inte bara indexet, eller missförstår jag din lösning?

 

Programmet skriver ut att rättsvar är [4], vilket är index 4, men jag vill få ut den integern som finns i index 4 i en variabel och sedan

If user_ans == correct_ans 
	print(Rätt svar!)
else:
	print(f"Fel svar, rätt svar är{correct_ans}")
Wille2006 skrev:

 

Programmet skriver ut att rättsvar är [4], vilket är index 4, men jag vill få ut den integern som finns i index 4 i en variabel och sedan

If user_ans == correct_ans 
	print(Rätt svar!)
else:
	print(f"Fel svar, rätt svar är{correct_ans}")

corrent_ans har du ju någon rad tidigare plockat ur din lista med rader, givet korrekt_svar_index. Det är alltså vad som står i filen, inte indexe för raden.

Jag petade in en fråga till, med boktavsalternativ och det fungerar fint. Ett bra test på att det inte är index i en lista som skrivs ut.

Vilket är inte ett programmeringsspråk?
A. Nordsamiska
B. C#
C. Python
Välj ett svarsalternativ (ange numret): C
Fel svar, rätt svar är: A
Svara
Close