Я пытаюсь создать код, который выберет случайное число, а затем использует это число, чтобы поместить содержимое определенных строк в текстовом файле в список.
Я не хочу, чтобы вопрос добавлялся в список более одного раза, поэтому я создал другой список, который будет содержать все выбранные числа.Все вопросы в нечетных строках, а ответы - в четных строках, поэтому сгенерированное число также должно быть четным.
Ниже приведен код, который я пытался сделать, но он не работает.
import random
#the empty question list
qlist=[0,0,0,0,0]
#the list that is filled with question numbers that have already been chosen
noschosen=[]
file=open('questiontest.txt')
lines=file.readlines()
i=0
#random question chooser
while i<len(qlist):
chosen=False
n=random.randint(1,10)
for index in range(0,len(noschosen)):
if n==noschosen[index]:
chosen=True
#all questions are on odd lines, so the random number can't be even.
while n%2==0 or chosen==True:
n=random.randint(1,10)
#the number chosen is added to the chosen list
noschosen.append(n)
#the program adds the question and its answer to qlist
qlist[i]=(lines[n],lines[n+1])
#increment
i=i+1
print (qlist)
Это то, что находится в следующем файле:
.
Question1
Answer1
Question2
Answer2
Question3
Answer3
Question4
Answer4
Question5
Answer5
Question6
Answer6
Question7
Answer7
Question8
Answer8
Question9
Answer9
Question10
Answer10
Точка в первой строке является преднамеренной.
Я ожидаю, что программа заполнит список случайным образом вэто мода:
[('QuestionA', 'AnswerA'),
('QuestionB', 'AnswerB'),
('QuestionC', 'AnswerC'),
('QuestionD', 'AnswerD'),
('QuestionE', 'AnswerE')]
Буквы AB C, D и E обозначают любое из чисел от 1 до 10. Например, если первым n оказалось 5, «Вопрос3» и «Ответ3»будет поставлен на первое место (поскольку в строке 5 находится вопрос 3).
Номер вопроса и соответствующий ответ должны быть сгруппированы вместе.Я не уверен, почему мой текущий код не работает, кто-нибудь может увидеть проблему или как я мог бы улучшить этот код в целом?