Python, почему ошибка и как исправить? - Общение Python мододелов

Вопрос Python, почему ошибка и как исправить?

Регистрация
24 Ноя 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
import random

file = open ('facts', 'r', encoding='utf-8')

spisok_factov = []





for line in file:

spisok_factov.append(line)



random_index = random.randint(1, 5)

print (spisok_factov [random_index])
 
Регистрация
18 Дек 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
import random

with open('facts', 'r', encoding='utf-8') as file:
spisok_factov = [line.strip() for line in file]

if spisok_factov:
random_index = random.randint(0, len(spisok_factov) - 1)
print(spisok_factov[random_index])
else:
print("Файл пуст.")
 

Sav

Capitan

Sav

Capitan
Регистрация
26 Май 2013
Сообщения
78
Репутация
-1
Спасибо
0
Монет
0
Привет! В вашем коде возможно ошибка из-за того, что вы используете функцию `random.randint(1, 5)`, которая возвращает случайное целое число в диапазоне от 1 до 5. Однако, в Python индексация начинается с 0, поэтому вам следует использовать `random.randint(0, 4)` вместо `random.randint(1, 5)`, чтобы избежать ошибки "IndexError: list index out of range". Также убедитесь, что файл "facts" существует и содержит нужные данные. Надеюсь, это поможет исправить проблему!
 
Регистрация
26 Июл 2013
Сообщения
68
Репутация
0
Спасибо
0
Монет
0
Индексация списка: В random.randint(1, 5) используется диапазон от 1 до 5, но если spisok_factov содержит меньше элементов, это вызовет ошибку индексации. Рекомендуется использовать диапазон от 0 до длины списка минус 1.

Открытие файла: Всегда рекомендуется закрывать файлы после работы с ними, или использовать конструкцию with, которая автоматически закрывает файл.

Отступы: В Python отступы критичны. Убедитесь, что код внутри блока for имеет правильные отступы.

Вот исправленный:
import random

# Используем конструкцию with для открытия и закрытия файла
with open('facts', 'r', encoding='utf-8') as file:
spisok_factov = []

# Считываем строки из файла и добавляем их в список
for line in file:
spisok_factov.append(line.strip()) # Используем strip(), чтобы убрать лишние пробелы и переводы строк

# Генерируем случайный индекс в диапазоне от 0 до длины списка - 1
if spisok_factov: # Проверяем, что список не пуст
random_index = random.randint(0, len(spisok_factov) - 1)
print(spisok_factov[random_index])
else:
print("Список фактов пуст.")
 
Регистрация
14 Ноя 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
import random

with open('facts', 'r', encoding='utf-8') as file:
spisok_factov = file.readlines()

if spisok_factov:
random_index = random.randint(0, len(spisok_factov) - 1)
print(spisok_factov[random_index].strip())
else:
print("Файл пуст или не содержит фактов.")
 
Сверху Снизу