#python #python-3.x
#python #python-3.x
Вопрос:
Я хотел бы создать тривиальную задачу! Но это работает не так, как я бы хотел. Это мой код :
import os
with open('questions','r') as file:
l = 0
question = []
right_guess = []
wrong_guess_1 = []
wrong_guess_2 = []
for line in file:
content_line = []
for char in line:
content_line.append(char)
if l == 0:
question.append(content_line)
l = 1
elif l == 1:
right_guess.append(content_line)
l = 2
elif l == 2:
wrong_guess_1.append(content_line)
l = 3
elif l == 3:
wrong_guess_2.append(content_line)
l = 4
if l == 4:
break
print(question)
print(right_guess)
print(wrong_guess_1)
print(wrong_guess_2)
input('Awnser : ')
Хорошо, теперь давайте я объясню две проблемы. Я попробовал свой код с этой структурой файла вопроса (расширения нет, это просто ‘вопрос’) :
a question
the right anwser
false guess
false guess
a other question
the right anwser
false guess
false guess
вот пример, если вы не понимаете :
How does 1 1 ?
3
0
5
Очевидно, что ответ во второй строке: 3 ! ( шучу, это 2, я знаю : D )
Итак, давайте вернемся к нашей проблеме: я запустил код, и он выдал мне этот результат :
[[ 'H', 'o', 'w', ' ', 'd', 'o', 'e', 's', ' ', '1', ' ', '1', ' ', '?', 'n']]
[[ 'H', 'o', 'w', ' ', 'd', 'o', 'e', 's', ' ', '1', ' ', '1', ' ', '?', 'n']]
[[ 'H', 'o', 'w', ' ', 'd', 'o', 'e', 's', ' ', '1', ' ', '1', ' ', '?', 'n']]
[[ 'H', 'o', 'w', ' ', 'd', 'o', 'e', 's', ' ', '1', ' ', '1', ' ', '?', 'n']]
Answer :
Я действительно не понимаю, в чем проблема, но я надеюсь, что кто-нибудь поможет мне получить этот результат :
How does 1 1 ?
2
0
5
Answer
И если некоторые из людей, которые будут смотреть эту страницу, действительно сумасшедшие, я мог бы ожидать такого результата :
(the program take one question, randomly, in the whole file)
the chosen one
one of the three possibles guests
one other of the three possibles guests
a third possible guest
( And we don't know which one is the correct )
Answer :
Я думаю, это все, спасибо всем, кто попытается дать подсказку, элемент или кто внесет свой вклад в эту маленькую программу !
Комментарии:
1. может быть, посмотрите еще раз на количество знаков равенства в «if l = 4»
2. Пожалуйста, покажите фактический код. В этом коде есть по крайней мере три опечатки, которые вообще помешали бы его запуску; итак, как мы можем узнать, что вызывает вашу проблему?
3. Но также спросите себя, почему вы перебираете каждый символ в строке и добавляете его в список, если это не то, что вы хотите получить на выходе.
4. @trilarion, просто моя ошибка, потому что я переписал всю программу вручную ^^
5. К вашему сведению, слово «угадать», а не «гость». Гость — это посетитель.
Ответ №1:
Ваша первая проблема здесь:
content_line = []
for char in line:
content_line.append(char)
Ничего из этого не требуется. Просто используйте line
для следующих нескольких строк:
for line in file:
if l == 0:
question.append(line)
и т. д
Ответ №2:
Код в вопросе не выдает одну и ту же строку несколько раз в качестве выходных данных. Если это и было проблемой, то она не представлена в этом коде.
Причина, по которой вы получаете списки вместо строк в результате, заключается в том, что вы явно создаете эти списки:
content_line = []
for char in line:
content_line.append(char)
Если бы вы просто использовали line
напрямую (или line.rstrip()
если вы хотите удалить новую строку в конце), вы бы получили строку текста для каждой строки в файле.
Причина, по которой вы получаете списки внутри списков, заключается в том, что вы не только помещаете символы в список, вы затем добавляете их в другой список. Поскольку кажется, что у вас есть только один элемент в списке, и вы ожидаете, что при печати списка будет одна строка, вы могли бы просто заменить эти списки строками.
Вместо добавления в списки, просто присваивайте переменным:
for line in file:
# Remove trailing whitespace at the end of the line
content_line = line.rstrip()
if l == 0:
question = content_line
l = 1
elif l == 1:
right_guess = content_line
l = 2
elif l == 2:
wrong_guess_1 = content_line
l = 3
elif l == 3:
wrong_guess_2 = content_line
l = 4
Ответ №3:
Хорошо, похоже, это окончательный код :
for line in file:
# Remove trailing whitespace at the end of the line
content_line = line.rstrip()
if l == 0:
question = content_line
l = 1
elif l == 1:
right_guess = content_line
l = 2
elif l == 2:
wrong_guess_1 = content_line
l = 3
elif l == 3:
wrong_guess_2 = content_line
l = 4
Спасибо quamrana, пользователю1018651 и всем, кто оставил комментарий, чтобы помочь мне!
В любом случае, это все еще «маленькая» вещь, которую нужно исправить, и я думаю, что это самое сложное :
Преобразуйте этот код для добавления случайных вопросов и получите, в конце, это :
(the program take one question, randomly, in the whole file)
the chosen one
one of the three possibles guests
one other of the three possibles guests
a third possible guest
( And we don't know which one is the correct )
Answer :