首页 > 解决方案 > 试图建立一个多项选择测验,但分数不断重置

问题描述

我正在尝试构建一个多项选择测验,从池中随机选择问题,然后在随机选择另一个问题之前删除已经提出的问题,同时保持分数(在这种情况下,'i' 代表分数)。我当前的问题是分数不断重置,因为(我相信)else/if 语句末尾的“frage()”调用将 i 设置为 0

我尝试在 fage() 方法之外定义分数并通常将其移动。我还尝试制作一系列 elif 语句,这样我就不必在每个输入提示的末尾使用 fage() ,但我觉得这使代码变得不必要地笨重和丑陋。

我是从这个测验的完全错误的方向开始的,还是我只是在某个地方犯了一个新手错误?

#chooses a question randomly from the pool and prints it

def frage():

    random_idx = randint(0, len(question_pool) - 1)
    print(question_pool[random_idx] ['frage'])
    print(" ")
    print("A:", question_pool[random_idx] ['a'],)
    print("B:", question_pool[random_idx] ['b'],)
    print("C:", question_pool[random_idx] ['c'],)
    print("D:", question_pool[random_idx] ['d'])

#input prompt
    score = 0
    for i in range(0, len(question_pool) - 1):
        guess = input("Was glaubst?: ")
        guess = guess.lower()

#Result of input
        if guess == question_pool[random_idx]['antwort']:
            print(" ")
            print("Ja freilich")
            score = (score + 1)
            print((str(score)) + (" Punkte"))
            del question_pool[random_idx]
            frage()

        else:
            print(" ")
            print("Auweia")
            print((str(i)) + (" Punkte"))
            del question_pool[random_idx]
            frage()

标签: python

解决方案


您使用i的是用于打印乐谱的循环计数器。对点使用另一个计数器
编辑:
也删除对 frage 的递归调用,它应该可以正常工作


推荐阅读