#python #random
#python #Случайный
Вопрос:
Я пытаюсь написать программу, которая запрашивает документ word и случайным образом возвращает строку из этого документа. В настоящее время возвращается каждая строка из документа, даже когда я применяю random.choice(). Есть мысли о том, как я могу это исправить?
Я запустил len () в своем списке и подтвердил, что он возвращает несколько переменных, но весь список все еще возвращается.
import random
filename = 'happy document.txt'
dictionary_list = []
with open(filename) as file_object:
lines = file_object.readlines()
for l in lines:
lines = [l.strip('n') for l in lines]
dictionary_list.append(lines)
random_choice = random.choice(dictionary_list)
print(random_choice)
Ответ №1:
Вы добавляете весь список строк к вашему dictionary_list
в каждом цикле, поэтому, какой бы из его элементов вы ни выбрали, это весь список…
Вы можете сделать:
import random
filename = 'happy document.txt'
with open(filename) as file_object:
lines = [line.strip('n') for line in file_object]
random_choice = random.choice(lines)
print(random_choice)
В качестве дополнительного примечания, for line in file_object
выполняет итерацию по строкам файла, вам не нужно использовать readlines
first и повторять итерацию по списку строк.
Комментарии:
1. Спасибо! Я подозревал, что могу это делать, но не был уверен, как это остановить. Ваш вывод действительно устранил проблему. Я замечаю, что ваш вывод тоже проще, чем я думаю. Я постараюсь не забывать следить за более простыми вариантами.
2. Добро пожаловать! 🙂 Обратите внимание, что когда вы почувствуете, что ответ решает вашу проблему, вы можете принять его, нажав на галочку слева.
Ответ №2:
Вы хотите
dictionary_list.extend(lines)
чтобы «не вложить» lines
в ваш dictionary_list.