python - Python 初学者 - 多项选择测验程序遇到问题
问题描述
Python 初学者在这里使用 3.8.1 。
我目前正在研究一个分为两部分的多项选择测验程序。第一部分允许用户创建一系列问题+答案并使用 Pickle 模块保存它们。第二部分允许用户加载他们的保存数据并接受程序的测试。
我的问题是,在程序的第二部分,我想单独显示每个问题的多项选择选项,但我的程序最终会显示每个问题的多项选择,而不仅仅是当前提出的问题程序。
这是什么原因造成的,如何解决!
提前感谢您的帮助!
#this is part one of the program, where the user creates and saves their data
def PartOne():
import pickle
import os
from time import sleep
os.system('cls')
while True:
t = input("How many questions do you have? : ")
if t.isnumeric():
break
else:
print("Please enter a valid number.")
cx = list()
ci = list()
co = list()
for i in range(0, int(t)):
c = input("Please enter the question : ")
ca = input("Please enter option A : ")
cb = input("Please enter option B : ")
cc = input("Please enter option C : ")
cd = input("Please enter option D : ")
while True:
m = input("What option coresponds to the correct answer (a, b, c or d) : ")
if m.lower() in ('a', 'b', 'c', 'd'):
cm = {"question": c, "answer": m}
cx.append(cm)
ch = {"option a": ca, "option b": cb, "option c": cc, "option d": cd}
ci.append(ch)
cu = {"question": cx, "answer": ci}
co.append(cu)
break
else:
print("Invalid answer. Please enter «a», «b», «c» or «d»")
while True:
question_cm = input("Would you like to save? (yes or no) ")
if question_cm.lower() in ('yes'):
pickle.dump(cx, open("Savedataone.dat", "wb"))
pickle.dump(ci, open("Savedatatwo.dat", "wb"))
pickle.dump(co, open("Savedatathree.dat", "wb"))
print("Saved!")
sleep(1.2)
break
if question_cm.lower() in ('no'):
print ("Please save to use this information.")
sleep(1.2)
break
else:
print("Invalid answer. Please enter yes or no.")
#This the second part of the program where the user uses what they inputed in part 1 to quiz themselves
def PartTwo():
import pickle
import random
import os
from time import sleep
os.system('cls')
while True:
person = input("How much people will participate in this study session? : ")
if person.isnumeric():
break
else:
print("Please enter a valid answer.")
for i in range(0, int(person)):
os.system('cls')
cx = pickle.load(open("Savedataone.dat", "rb"))
ci = pickle.load(open("Savedatatwo.dat", "rb"))
co = pickle.load(open("Savedatathree.dat", "rb"))
print("Study session will begin soon...")
sleep(2)
for cm in cx:
random.shuffle(cx)
print(cm["question"])
print(ci)
response = input("What was the correct answer (a, b, c or d)? : ")
if (response == cm["answer"]):
print("Good!")
continue
else:
print("Wrong...")
sleep(0.2)
print("The correct answer was", cm, ".")
continue
print("Study session is now over.")
sleep (1)
print("Next person's study session will begin soon if needed.")
sleep(1)
print("Verification...")
sleep(2.5)
sleep(1.35)
print("Study session is now over.")
解决方案
将您当前的 partTwo() 函数替换为:
def PartTwo():
import pickle
import random
import os
from time import sleep
os.system('cls')
while True:
person = input("How much people will participate in this study session? : ")
if person.isnumeric():
break
else:
print("Please enter a valid answer.")
for i in range(0, int(person)):
os.system('cls')
cx = pickle.load(open("Savedataone.dat", "rb"))
ci = pickle.load(open("Savedatatwo.dat", "rb"))
co = pickle.load(open("Savedatathree.dat", "rb"))
print("Study session will begin soon...")
sleep(2)
questionNumber=0
for cm in cx:
random.shuffle(cx)
print(cm["question"])
print(ci[questionNumber])
response = input("What was the correct answer (a, b, c or d)? : ")
if (response == cm["answer"]):
print("Good!")
questionNumber += 1
continue
else:
print("Wrong...")
sleep(0.2)
print("The correct answer was", cm, ".")
questionNumber+=1
continue
print("Study session is now over.")
sleep (1)
print("Next person's study session will begin soon if needed.")
sleep(1)
print("Verification...")
sleep(2.5)
sleep(1.35)
print("Study session is now over.")
我注意到您在“ci”中附加了 PartOne() 中的每个答案,但在 partTwo() 中,您只需打印 ci 而不指定打印所有内容的部分。
我添加了一个计数器(questionNumber)来跟踪当前提出的问题,该计数器用于指定要给出哪些可能的答案。
推荐阅读
- java - Javax 验证 - 如何订购默认和自定义注释?
- laravel - 试图获取非对象的属性“id”(查看:E:\xampp\htdocs\mini_blog\resources\views\admin\posts\edit.blade.php)
- kubernetes - 如何管理 Ingress 哪些路由到不同的 helm 子图?
- python - 我正在尝试使用 Django 实现博客应用程序。我创建了带有个人资料图片上传的注册表单。但它没有提交数据?
- python - 如何在树视图中对值进行排序
- android - 在应用启动时请求权限的适当位置/方法是什么?
- django - 在 django 的干净函数中的特定字段上引发 ValidationError
- spring - 当 getter 方法返回与属性不同的类型时,为什么 xml 自动装配注入失败?
- html - 带边框的递归 DIV:基本情况
- r - 使用来自另一个脚本的变量(文件间函数闭包)