Файл содержит информацию о книгах: фамилия автора, название книги, количество страниц, цена. Определить самую дешевую книгу. И вывести название на экран.
Вот код, который получился у нас, но он работает не так, выводит непонятно что...
priceBook = open("price1.txt", "r")
string = ''
prices = {}
news = {}
count = 0
pos = 0
for i in priceBook.readline():
string += i
pos += 1
checkPoint = string.find('Стоимость:')
endPoint = string[checkPoint].find('.')
print(checkPoint, endPoint)
news = {count:string[checkPoint+11: endPoint-1]}
prices.update(news)
news.clear
count += 1
print(prices)
priceBook.close()
Вот написанное в текстовом файле:
Автор: Джоан Роулинг. Книга: "Гарри Поттер и десятое яйцо". Страниц: Сто пятьдесят. Стоимость: 5000.
Автор: Стивен Кинг. Книга: "Книга без названия". Страниц: Сто. Стоимость: 1500.
Автор: Анджей Сапковски. Книга: "Ведьмак". Страниц: Двадцать пять. Стоимость: 4000.
Автор: Говард Лавкрафт. Книга: "Зов Ктулху". Страниц: Пятнадцать. Стоимость: 2000.
Автор: Рикардо Милос. Книга: "Мастер Флекса". Страниц Двадцать. Стоймость 50000.
Python
Помогите решить задачу на Python.
Вот интересно, вроде бы ключевое слово для поиска должно быть "Стоимость:", но вдруг название книги: "Стоимость: от А до Я" или вроде того. Решение очевидно: использовать rfind вместо find. А что если книг по минимальной цене более одной? Тогда надо вывести их все. Кстати, в текстовом файле опечатка, "Стоймость", вместо "Стоимость" и еще двоеточий не хватает, значит нужно генерировать исключение, что бы код корректно работал с некорректными данными. Вообщем хватит флуда, вот код, с пробелами вместо пробелов:
min_price = -1 # ценник на книгу не может быть меньше нуля
min_indexs = []
with open('price1.txt', encoding='UTF-8') as f:
lines = f.readlines()
# Если в последней строке нету перевода на новую строку, то добавить его.
if lines[-1][-1] != '\n': lines[-1] += '\n'
index = 0
for i, line in enumerate(lines):
x = line.rfind('Стоимость: ') + 11
price = line[x:-2]
try:
price = int(price)
except:
print(f'Ошибка: структура файла нарушена в {i+1}-й строке')
continue
if min_price == -1:
min_price = price
else:
if price < min_price:
min_price = price
min_indexs = [i]
elif price == min_price:
min_indexs.append(i)
print('Самые дешевые книги:')
[print(' ' + lines[index]) for index in min_indexs]
min_price = -1 # ценник на книгу не может быть меньше нуля
min_indexs = []
with open('price1.txt', encoding='UTF-8') as f:
lines = f.readlines()
# Если в последней строке нету перевода на новую строку, то добавить его.
if lines[-1][-1] != '\n': lines[-1] += '\n'
index = 0
for i, line in enumerate(lines):
x = line.rfind('Стоимость: ') + 11
price = line[x:-2]
try:
price = int(price)
except:
print(f'Ошибка: структура файла нарушена в {i+1}-й строке')
continue
if min_price == -1:
min_price = price
else:
if price < min_price:
min_price = price
min_indexs = [i]
elif price == min_price:
min_indexs.append(i)
print('Самые дешевые книги:')
[print(' ' + lines[index]) for index in min_indexs]
Если положите свой код на
pastebin.com
а затем сюда ссылку, то тому, кто пожелает Вам помочь, будет несравненно легче это сделать.
pastebin.com
а затем сюда ссылку, то тому, кто пожелает Вам помочь, будет несравненно легче это сделать.
Данный код не имеет отношения к поставленной задаче
Сергей Воробьёв
это и так понятно... но я написал сюда, чтобы мне помогли решить её...
Похожие вопросы
- Пожалуйста, помогите решить задачу на Python. Упражнения 57,58,59,60.
- Помогите решить задачу на Python. Никак не могу решить задачу, больше дня не могу найти ответ! Никакой код не работает.
- Пожалуйста, помогите решить задачу на Python. Упражнение 124, 125, 146
- Помогите решить задачу на python! Упражнение 41,45,47.
- Помогите решить задачу на python! Упражнение 49,50,51,52,53.
- Помогите решить задачу на python!
- Помогите решить задачу на Python
- Помогите решить задачу на Python
- Нужно решить задачу на Python
- Помогите решить задачу в яндекс-практикуме Python