Python Forum
Trivia2 Loop problem?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Trivia2 Loop problem?
#1
So I'm getting the constant error of there being it reading the loop too many times and I was wondering how to fix that, I'm currently working in school on the python learning book and on trivia 2 i'm starting to slip because of this problem.

#18_Trivia2

import sys

def open_file(file_name, mode):
   """Open a file"""
   try:
       the_file = open(file_name, mode)
   except IOError as e:
       print("Unable to open the file",file_name,"Ending program.\n", e)
       input("\n\nPress the enter key to exit")
       sys.exit()
   else:
       return the_file

def next_line(the_file):
   """Return next line fromthe trvia file, formatted"""
   line = the_file.readline()
   line = line.replace("/","\n")
   return line

def next_block(the_file):
   """Return the next block of data from the trivia file."""
   category = next_line(the_file)
   question = next_line(the_file)

   answers = []
   for i in range(4):
       answers.append(next_line(the_file))

   correct = next_line(the_file)
   if correct:
       correct = correct[0]

   explanation = next_line(the_file)

   points = next_line(the_file)

   return category, question, answers, correct, explanation, int(points)

def welcome(title):
   """Welcome the player and get his/her name"""
   print("\t\tWelcome to Trivia Challenge!\n")

def main():
   trivia_file = open_file("trivia.txt","r")
   title = next_line(trivia_file)
   welcome(title)
   score = 0

   #Get first block
   category, question, answers, correct, explanation, points = next_block(trivia_file)
   while category:
       #ask a question
       print(category)
       print(question)
       for i in range(4):
           print("\t", i + 1, "-", answers[i])


       #Get answer
       answer = input("What's your answer?: ")
       #Check answer
       if answer == correct:
           print("\nRight!",end = " ")
           score += points
       else:
           print("\nWrong.",end = " ")
       print(explanation)
       print("Score: ",score,"\n\n")

       #Get next block
       category, question, answers, correct, explanation, points = next_block(trivia_file)

   trivia_file.close()
   print("That was the last question!")
   print("You're final score is",score)

main()
input("Press the enter key to exit")
The error it has been showing me is:
Output:
Traceback (most recent call last):  File "C:\Users\milll929\Downloads\Mills_17_Trivia.py", line 81, in <module>    main()  File "C:\Users\milll929\Downloads\Mills_17_Trivia.py", line 75, in main    category, question, answers, correct, explanation, points = next_block(trivia_file)  File "C:\Users\milll929\Downloads\Mills_17_Trivia.py", line 41, in next_block    return category, question, answers, correct, explanation, int(points) ValueError: invalid literal for int() with base 10: ''
Which my teacher has told me it is a problem with looping and it doing it too many times, can I please get some help?
Thank you!
Reply


Messages In This Thread
Trivia2 Loop problem? - by milll929 - Jun-06-2017, 02:08 PM
RE: Trivia2 Loop problem? - by nilamo - Jun-06-2017, 04:13 PM
RE: Trivia2 Loop problem? - by milll929 - Jun-06-2017, 11:27 PM
RE: Trivia2 Loop problem? - by ichabod801 - Jun-07-2017, 12:46 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Problem with for loop Intellectual11 5 2,760 Aug-26-2021, 04:14 PM
Last Post: naughtyCat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020