【发布时间】:2021-03-13 20:58:54
【问题描述】:
首先让我大声说出来:这不是家庭作业、强制性作业或任何有截止日期的事情。 我这样做是为了我自己的练习。 话虽如此,我真的很感谢你的帮助!
我正在开发一个动态的、基于文本的(目前)Test Maker 程序。 用户可以编写问题,选择答案的数量,给出的分数,选择正确的问题并以表格形式打印结果。
如何编写一个 for 循环,以便遍历列表并根据表格打印输出?
再次感谢您的宝贵时间!
我知道代码大小是有限制的,但我真的不知道在这个代码中可以跳过什么,所以我真的很抱歉,如果有人建议我删除什么,我会编辑它。
这是结果表模板: Result Table Template
这是我要添加 for 循环的函数:
def finish(lines):
print("\n\n==============RESULTS==============\n")
print("#\t Question\t Answer\t\t Score")
number_of_questions = len(question_list)
代码:
def get_questions():
question = input("Enter your question: ")
if len(question) == 0:
print("No Empty Questions.")
get_questions()
question_list.append(question)
return question
def get_question_score(s):
try:
s = int(input("Enter Question Score: "))
except ValueError:
print("[!]Error! Use numbers.")
return s
def check_sum(s):
scores_local.clear()
try:
if sum(scores) + s > 100:
print("Score sum is higher than 100")
print(f"{100 - sum(scores)} left")
score = 0
if len(scores) != 0:
scores.pop()
return False
except ValueError:
print("Use Numbers.")
scores_local.append(s)
scores.append(s)
return True
def get_number_of_answers(n_o_a):
try:
n_o_a = int(input("Number of answers (Max 4)? "))
except ValueError:
print("Please select [2-4]")
number_of_answers.append(n_o_a)
return n_o_a
def big_small(n_o_a):
if n_o_a < 2 or n_o_a > 4:
print("Please select [2-4]")
answers.clear()
answers_local.clear()
big_small(n_o_a=number_of_answers[0])
return False
elif 2 > number_of_answers[0] > 4:
print("Error! Please select [2-4]")
return False
else:
print(n_o_a)
return True
def get_answers(num_of_answers, answer):
answers_local.clear()
answers.clear()
for ans in range(number_of_answers[0]):
answer = input(f"Answer #{ans+1}: ") # Start indexing from 1
if len(answer) == 0:
print("Error! No Input!")
get_answers(num_of_answers, answer="")
answers_local.append(answer)
answers.append(answer)
return answer
def get_right_answer_number(num):
try:
num = int(input("Type the Right Answer Number: "))
except ValueError:
print("Error! Please type numbers only.")
return num
def check_right_answer_number(num):
if 0 < num <= number_of_answers[0]:
return True
else:
return False
def ask_if_sure(ans): # Returns True
ask_sure = input("Are you sure? [Y/n]: ")
if ask_sure.lower() == "n":
number_of_answers.clear()
check_right_answer_number(num=number_of_answers[0])
elif ask_sure.lower() == "y":
return True
else:
print("Error! Please type [Y/n]")
ask_if_sure(ans="")
def ask_continue():
a_continue = input("Do you wish to add more questions? [Y/n]: ")
if a_continue.lower() == "y":
return True
elif a_continue.lower() == "n":
return False
else:
print("Error! Please choose [Y/N]")
ask_continue()
def restart():
answers_local.clear()
number_of_answers.clear()
right_answer_number.clear()
main()
def finish(lines):
print("\n\n==============RESULTS==============\n")
print("#\t Question\t Answer\t\t Score")
number_of_questions = len(question_list)
def main():
questions = get_questions()
question_score = get_question_score(s=0)
score_sum = check_sum(question_score) # Returns True/False
num_of_answers = get_number_of_answers(n_o_a=0)
is_bigger = big_small(num_of_answers) # Returns True/False
if not is_bigger:
print(f"Question score: {question_score}, Valid: {score_sum}")
if sum(scores) != 0:
scores.pop()
question_score = get_question_score(s=0)
while is_bigger:
question = questions[-1]
multiple_answers = get_answers(num_of_answers, answer="")
print(answers_local)
right_answer_number_var = get_right_answer_number(num=0)
print(right_answer_number_var)
is_right = check_right_answer_number(right_answer_number_var)
if not is_right:
print(f"Error! Please select [1={number_of_answers[0]}")
right_answer_number_var = get_right_answer_number(num=0)
while is_right:
sure = ask_if_sure(ans="")
while sure:
if number_of_answers[0] < len(questions):
lines = len(questions)
else:
lines = number_of_answers[0]
answers.append(right_answer_number_var)
ask_if_continue = ask_continue()
if not ask_if_continue:
finish(lines)
while ask_if_continue:
restart()
break
break
break
break
if __name__ == "__main__":
question_list = []
scores = []
scores_local = []
number_of_answers = []
answers = []
answers_local = []
right_answer_number = []
main()
【问题讨论】:
-
@maddy 是的。非常感谢!当我得到正确的外观时,我会发布答案。
标签: python list for-loop printing