Python初学者在这里使用3.8.1。
我目前正在开发一个多项选择测验程序,分为两个部分。第一部分允许用户创建一系列questions+answers并使用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.") 发布于 2020-02-05 07:12:58
将当前的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.")我注意到您将PartOne()中的每个答案都附加到了' ci‘中,但在partTwo()中,您只是打印ci,而没有指定打印所有内容的部分。
我添加了一个计数器(questionNumber)来跟踪当前提出的问题,该计数器用于指定给出哪些可能的答案。
https://stackoverflow.com/questions/60066670
复制相似问题