В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
ellapetrovna
ellapetrovna
22.04.2023 22:28 •  Информатика

Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z). Определите количество строк, в которых буква E встречается чаще, чем буква A. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с данного алгоритма.

Не пойму, в чём ошибся, у меня ответ 991, а должно быть 467:

with open('inf_22_10_20_24.txt', 'r') as F:
s = F.readline()

m, l, dl = 0, 0, 0
for line in s:
for i in range(1, len(s)):
if s[i] == 'A': l += 1
elif s[i] == 'E': dl += 1
if dl > l:
m += 1
l = 0
dl = 0

print(m)

В общем, нужно найти ошибку и исправить программу.

Показать ответ
Ответ:
peskovaedoz45yo
peskovaedoz45yo
26.04.2021 19:28

Программа на Python приведена ниже

Объяснение:

https://imgur.com/a/zEYf69b (или скриншот, если не откроется ссылка)

Ваша программа:

1) Вы считываете все в одну строку, что не соответствует главному условию задачи: в файле даны строки, а не одна строка. На скриншоте приведено верное написание: пишем цикл for s in file.readlines(), так мы обозначим, что строк больше одной.

2) Для подсчета количества букв логично использовать встроенный метод str.count(''), однако если вы решили обойти это и использовать специальные переменные для подсчета (такой вариант решения возможен, хотя и менее эффективен с точки зрения написания кода), верное решение таким путем приведено на скриншоте №2

   2.1) В программе №2 необходимо не забывать обнулять переменные

         после каждого цикла, как это указано на скриншоте №2


Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содер
Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содер
0,0(0 оценок)
Ответ:
belok909
belok909
09.01.2024 14:42
Привет! Я рад выступить в роли твоего школьного учителя и помочь тебе разобраться с этой программой.

Первое, что я заметил, это то, что ты используешь метод `readline()` для чтения файла, который читает только одну строку из файла. Тебе нужно использовать метод `readlines()`, который считывает все строки из файла и возвращает их в виде списка. Таким образом, ты сможешь обработать каждую строку по отдельности.

Вот исправленный и обновленный код:

```python
with open('inf_22_10_20_24.txt', 'r') as F:
lines = F.readlines()

m = 0

for line in lines:
l = 0
dl = 0
for i in range(len(line)):
if line[i] == 'A':
l += 1
elif line[i] == 'E':
dl += 1
if dl > l:
m += 1

print(m)
```

Теперь давай разберемся, что было исправлено:

1. `readline()` заменен на `readlines()`, чтобы считать все строки из файла.
2. Внутри цикла `for line in lines:` я добавил две переменные `l` (для подсчета буквы 'A') и `dl` (для подсчета буквы 'E'). Они инициализируются нулем для каждой новой строки.
3. Я исправил ошибку в цикле `for i in range(len(line))`. Теперь он должен проходить по каждому индексу символов в текущей строке.
4. Я добавил проверку `if dl > l:` чтобы увеличить счетчик `m`, только если количество буквы 'E' больше, чем количество буквы 'A'.

Теперь твоя программа должна работать правильно и выдавать ожидаемый результат - 467.

Удачи в изучении программирования! Если у тебя есть еще вопросы, не стесняйся задавать.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота