Вывод значений словаря по одному

#python #dictionary

#python #словарь

Вопрос:

Я пишу функцию, которая должна «перебирать» мой словарь. Содержимое словаря содержит 4 вопроса, которые я хочу задать своему пользователю, один за другим. Начиная с первого вопроса, я хочу задать все вопросы, которые у меня есть в моем словаре. Когда заданы все вопросы, я хочу, чтобы моя функция остановилась. Я пытался найти ответ, который я ищу, но, к сожалению, без каких-либо результатов.. Я также создал диаграмму, которая объясняет алгоритм, который я хочу написать. Смотрите ссылку ниже: https://i.stack.imgur.com/aNWUq.png

Код, который у меня есть:

 import random
from time import sleep

def vragenLijst():
    vragen_list = open("questions.txt").readlines()
    return vragen_list
 

def stel_vraag(vragen_list):
    vragen_IAT = {
        "vraag_1" : str(vragen_list[0]),
        "vraag_2" : str(vragen_list[1]),
        "vraag_3" : str(vragen_list[2]),
        "vraag_4" : str(vragen_list[3])
    }
    vragen_FICT = {
        "vraag_5" : vragen_list[4],
        "vraag_6" : vragen_list[5],
        "vraag_7" : vragen_list[6],
        "vraag_8" : vragen_list[7]
    }
    vragen_SE = {
        "vraag_9" : vragen_list[8],
        "vraag_10" : vragen_list[9],
        "vraag_11" : vragen_list[10],
        "vraag_12" : vragen_list[11]
    }
    vragen_BDAM = {
        "vraag_13" : vragen_list[12],
        "vraag_14" : vragen_list[13],
        "vraag_15" : vragen_list[14],
        "vraag_16" : vragen_list[15]
    }

    counter_IAT = 0
    print("Hier komen de eerste vragen: ")
    sleep (2.0)

    print()
    while vragen_IAT:
        antwoord = input(vragen_IAT   "Y/N: ")
        for vragen in vragen_IAT:
            if antwoord == "y" or antwoord == "Y":
                counter_IAT = counter_IAT   1
                print(counter_IAT)

            elif antwoord == "n" or antwoord == "N":
                counter_IAT = counter_IAT
                print(counter_IAT)
                
            else: 
                print("Dit heb ik niet begrepen.. Vul [Y]es of [N]o in: ")
                if antwoord != "y" or antwoord != "Y":
                    continue

    
    # while vragen_FICT:



    # while vragen_SE: 


    # while vragen_BDAM:

    

def main():
    vragen = vragenLijst()
    stel_vraag(vragen)
    
if __name__ == "__main__":
    main() 

  

Я новичок, и я надеюсь, что я достаточно хорошо объяснил свой вопрос для вас, ребята! Любая помощь будет оценена по достоинству!

Комментарии:

1. Звучит как проблема XY. У вас vragen_list уже есть список со всеми вопросами. В чем преимущество помещения их в словари перед отображением их пользователю? вы могли бы просто сгруппировать их по индексу (IAT = [0,1,2,3]; FICT = [4,5,6,7] …)

2. Массив вопросов представляется более разумным использовать здесь, чем словарь, если это не является обязательным требованием.

Ответ №1:

Я не могу воспроизвести весь ваш код, но дам вам предысторию. Предположим myDict , что в качестве словаря ваших вопросов вы можете перебирать ключи, которые являются вопросами, и проверять if их следующим образом:

 for question in myDict.keys():
  myAnswer = input(question)
  if myAnswer # Continue validation
  

Комментарии:

1. Эй, чувак! Я использовал ваше объяснение, оно работает для меня! Мне просто нужно выяснить, как остановиться после 4 вопросов сейчас! Спасибо

Ответ №2:

Я думаю, это сработает для того, что вы просите:

 questions = {'alpha? ': 'y', 'beta? ': 'n'}

for q,a in questions.items():
    while input(q).lower() != a:
        print("WRONG!")
  

Комментарии:

1. Привет, спасибо за ваш комментарий! Я использовал цикл for, а затем мой оператор if с моими собственными проверками, которые у меня есть.