Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка в коде с индексами.

Saxar Saxarer Ученик (53), на голосовании 5 месяцев назад
import csv

# 1. Создание файла .csv и добавление данных
data = [
["Властелин колец", "Джон Р. Р. Толкин", "Великобритания", 1954],
["Гордость и предубеждение", "Джейн Остин", "Великобритания", 1813],
]

with open('Books.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["Наименование книги", "Писатель / Автор", "Страна автора", "Год издания"])
writer.writerows(data)

# 2. Добавление новой записи и вывод каждой строки файла .csv
new_entry = input("Введите новую запись в формате 'Наименование книги,Писатель / Автор,Страна автора,Год издания': ")
with open('Books.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow(new_entry.split(','))

with open('Books.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(', '.join(row))

# 3. Добавление записей в список
num_entries = int(input("Введите количество записей, которые вы хотите добавить: "))
new_entries = [input("Введите новую запись в формате 'Наименование книги,Писатель / Автор,Страна автора,Год издания': ").split(',') for _ in range(num_entries)]
with open('Books.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerows(new_entries)

# 4. Запросы
# a. Вывод книг указанного автора
author = input("Введите автора: ")
with open('Books.csv', 'r') as file:
reader = csv.reader(file)
books = [row for row in reader if row[1] == author]
if books:
for book in books:
print(', '.join(book))
else:
print("В списке нет ни одной книги этого автора.")

# b. Вывод книг, используя заданный промежуток времени
start_year = int(input("Введите начальный год поиска: "))
end_year = int(input("Введите конечный год поиска: "))
with open('Books.csv', 'r') as file:
reader = csv.reader(file)
books = [row for row in reader if start_year <= int(row[3]) <= end_year]
for book in books:
print(', '.join(book))

# c. Вывод данных с нумерацией строк
with open('Books.csv', 'r') as file:
reader = csv.reader(file)
for i, row in enumerate(reader, start=1):
print(f"{i}. {', '.join(row)}")

# d. Изменение данных в файле

Подскажите что нужно сделать в даннном случае с индексом books = [row for row in reader if row[1] == author] чтобы небыло ошибки?
Голосование за лучший ответ
Похожие вопросы