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.
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.
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.
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