Python 我正在用一个txt文件做一个选择题测验,但不知道如何随机化选项并给出分数

Python 我正在用一个txt文件做一个选择题测验,但不知道如何随机化选项并给出分数,python,text-files,Python,Text Files,如何随机化选项,让用户输入B C或D,并为每个正确答案添加点数在洗牌数组之前,您需要使用用户correctans=answer1行 在对数组进行洗牌之后,变量answer1的值发生了变化,它不再存储正确的answery[1],这就是为什么您得到的分数为0 您还应该使用if语句代替while循环,因为您希望用户只输入一个选项。两件事: 在洗牌应答数组之前设置正确的应答变量。否则,你会得到一个随机的正确答案,而不是第一个不是你想要的答案。 把打印放在代码的末尾,而不是在循环的中间,除非你想在每个问题

如何随机化选项,让用户输入B C或D,并为每个正确答案添加点数

在洗牌数组之前,您需要使用用户correctans=answer1行

在对数组进行洗牌之后,变量answer1的值发生了变化,它不再存储正确的answery[1],这就是为什么您得到的分数为0

您还应该使用if语句代替while循环,因为您希望用户只输入一个选项。

两件事:

在洗牌应答数组之前设置正确的应答变量。否则,你会得到一个随机的正确答案,而不是第一个不是你想要的答案。 把打印放在代码的末尾,而不是在循环的中间,除非你想在每个问题之后打印分数。 最后,用if替换while。while告诉您的代码循环,只要userans变量等于correctans变量,这两个变量在循环体中都不会改变,因此将永远保持不变。if语句检查条件一次。 代码中有一个冗余变量声明。只需设置问题1=y[0],而不是使用两个作业 奖励:评论你的代码

希望这有帮助

points = 0
with open("ComputerScience.txt","r") as f:
    for line in f:
        y = line.split(",")
        question = y[0]
        question1 = question
        del y[0]
        random.shuffle(y)
        answer1 = y[0]
        answer2 = y[1]
        answer3 = y[2]
        answer4 = y[3]
        print(question1+"\n","(A)",answer1,"\n","(B)",answer2,"\n","(C)",answer3,"\n","(D)",answer4)
        correctans = answer1
        userans = input("Enter A,B,C,D: ")
        while userans == correctans:
            points = (points+1)
        print(points)
分数=0 使用openlovestory.txt,r作为f: 对于f中的行: z=直线分割, 问题=z[0] correctans=z[-1] 问题1=问题 y=z[1:-1] 兰登·沙夫利 回答1=y[0] 回答2=y[1] 回答3=y[2] 回答4=y[3] ans={} k=0 对于“A B C D”中的选项。拆分: ans[choice]=y[k] k+=1

import random

您已经编写了随机选项的代码,该代码不起作用?您面临的问题是什么?第一个答案是正确的,但您希望将其随机化?哪个python版本?我正在尝试将选项随机化,以便从文本文件中,每次打开程序选项A B C D都是不同的,用户输入A B C或D来选择正确的答案。您如何知道哪个答案是正确的?谢谢,我会这样做,但我如何让用户输入B C或D并从中选择一个来获得正确的答案您可以使用userans=INPUNTER A,B,C,D:在while语句中。这样,我们要求用户反复给出答案,直到用户给出正确答案。@Bassim我想你希望用户反复输入,是吗?例如,如果用户输入了一个选项,如果答案不正确,您希望他输入其他选项。如果你想让用户只输入一次,用户如果我想让它在每次你完成一个问题时移到下一个问题,我不知道你的文本文件结构是怎样的,用在下面的文本文件A代表?,苹果,球,猫,狗,苹果B代表?,苹果,球,猫,狗,球C代表?,苹果,球,猫,狗,catYes这就是它的结构它说“s”没有定义我已经弄明白了我想我把s.split改成了str.split但现在我遇到了一个问题,它没有打印问题,而且多项选择选项也没有被洗牌。每个问题的正确答案都设置为A。我希望这样,每次运行程序时,正确答案都会从A更改为B,例如从A更改为D。
import random
    print(question1+"\n","(A)",answer1,"\n","(B)",answer2,"\n","(C)",answer3,"\n"," 
          (D)",answer4)

    userans = input("Enter A,B,C,D: ")
    print('ans', ans[userans], 'act ans', correctans)

    if ans[userans] in correctans:            
        points += 1
    print('points:', points)