Использование while и if в python для создания игры на основе текстового файла

Я пытаюсь задать вопрос, чтобы пользователь ввел ответ. Программа должна сверить ответ пользователя с правильным ответом, а не вести счет. У меня возникают трудности с форматированием операторов while и if и чтением строк из текстового файла.

Игра-викторина

def main():

    print("\t\tWelcome to Bible Champion!\n "
        "It can be difficult to remember the characters of the bible.\n "
          "Bible Champion makes it fun and easy with trivia "
          "style questions!\n")
        
    name =(input("Please enter your first name to get started: "))

    print()
                          
    name1 = name[1:] + name[0] + "ay" + "7"
    
    print("Here is player one's game name:",name1,"\n")


  
    qf= open("quiz_game.txt", "r")
    for i in range(2):
        print (qf.readline())

    user_ans = str(input())

    while user_ans[0] =="a" or user_ans[0] == "a.":
            print ("Correct")
            break
    if user_ans[0] =="b" or user_ans[0] == "b.":
            print ("Incorrect")
    if user_ans[0] =="c" or user_ans[0] == "c.":
            print ("Incorrect")
    if user_ans[0] =="d" or user_ans[0] == "d.":
        
            print ("InCorrect")


    qf= open("quiz_game.txt", "r")
    for i in range(4):
            print (qf.readline())

    user_ans = str(input())

    while user_ans[0] =="a" or user_ans[0] == "a.":
                print ("Correct")
                break
    if user_ans[0] =="b" or user_ans[0] == "b.":
                print ("Incorrect")
    if user_ans[0] =="c" or user_ans[0] == "c.":
                print ("Incorrect")
    if user_ans[0] =="d" or user_ans[0] == "d.":
            
                print ("InCorrect")

    qf.close()


main()

Вот что у меня есть до сих пор.

Вот вывод обновления. Как мне сделать так, чтобы он оценивал первый ответ и переходил к следующему набору вопросов и ответов?

    ==========================================================
        ==   Welcome to Bible Champion!   ==
 ==   It can be difficult to remember the characters of the bible.   ==
 ==     Bible Champion makes it fun and easy with trivia style questions!     ==

     ===========================================================
Please enter your first name to get started: kok

Here is player one's game name: okkay7 

(1)Which bible character had strength in his hair?  

a. Samuel b. Peter c.Samson d.John

a
Incorrect
(1)Which bible character had strength in his hair?  

a. Samuel b. Peter c.Samson d.John

c

(2)King David danced out of his ______?     

Обновлено?

Как мне прочитать, например, только строки 3 и 4 из текста в python?

Я пытался использовать это:

напечатать qf.readline () [0: 2]

но это дало мне ошибку.


person Korene Stuart    schedule 08.03.2018    source источник
comment
Это не ответ на вопрос, но есть гораздо более простые способы проверки, которые вы делаете. Взгляните на этот пример.   -  person daviewales    schedule 08.03.2018


Ответы (1)


Если я правильно понимаю ваш код, вам не нужно использовать while. Все, что вам нужно, это if..elif..else

Попробуй это:

print("\t\tWelcome to Bible Champion!\n "
    "It can be difficult to remember the characters of the bible.\n "
      "Bible Champion makes it fun and easy with trivia "
      "style questions!\n")

name =(input("Please enter your first name to get started: "))

print()

name1 = name[1:] + name[0] + "ay" + "7"

print("Here is player one's game name:",name1,"\n")



qf= open("/Users/eon/Downloads/linex.txt", "r")
for i in range(2):
    question = qf.readline()
    answer = False
    while answer == False:
        print (question)
        user_ans = str(input())

        if user_ans[0] =="a" or user_ans[0] == "a.":
            answer = True
            # increment score here
            print ("Correct")
        elif user_ans[0] =="b" or user_ans[0] == "b.":
            print ("Incorrect")
        elif user_ans[0] =="c" or user_ans[0] == "c.":
            print ("Incorrect")
        elif user_ans[0] =="d" or user_ans[0] == "d.":
            print ("InCorrect")


qf= open("/Users/eon/Downloads/linex.txt", "r")
for i in range(4):    
    question = qf.readline()
    answer = False
    while answer == False:
        print (question)
        user_ans = str(input())

        if user_ans[0] =="a" or user_ans[0] == "a.":
            answer = True
            # increment score here
            print ("Correct")
        elif user_ans[0] =="b" or user_ans[0] == "b.":
            print ("Incorrect")
        elif user_ans[0] =="c" or user_ans[0] == "c.":
            print ("Incorrect")
        elif user_ans[0] =="d" or user_ans[0] == "d.":
            print ("InCorrect")

qf.close()
person hungersoft    schedule 08.03.2018
comment
У меня проблема с выводом. Я видел, что могу использовать продолжение для возобновления итерации из файла со следующим набором строк чтения, но я не понимаю, как его форматировать. - person Korene Stuart; 08.03.2018
comment
Пожалуйста, введите свое имя, чтобы начать: kok Вот имя игрока в игре: okkay7 (1)У какого библейского персонажа была сила в волосах? а. Самуэль б. Петр c.Самсон d.Иоанн a Неправильно (1)У какого библейского персонажа была сила в волосах? а. Самуэль б. Петр c.Самсон d.Иоанн c (2)Царь Давид танцевал из своего ______? Итак, это мой выход. Я хотел бы, чтобы он забил первый ответ, а затем перешел ко второму вопросу и отображению множественного выбора. - person Korene Stuart; 08.03.2018
comment
В отличие от вашего комментария, ваш код возвращает true только тогда, когда ответ «а» или «а». Вам нужно изменить это, чтобы оно соответствовало соответствующим ответам на ваши вопросы. Но я изменил код, чтобы задавать один и тот же вопрос, пока пользователь не даст правильный ответ. Вы можете самостоятельно увеличивать/уменьшать баллы в зависимости от того, как вы оцениваете ответы. - person hungersoft; 08.03.2018