Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
15 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 57

Посчитать количество четных и нечетных элементов в файле и сравнить

25.11.2022, 09:45. Показов 2233. Ответов 6

Студворк — интернет-сервис помощи студентам
Дан файл INPUT.txt, в первой строке число элементов массива, во второй - элементы массива.
Code
1
2
8
29 4 7 12 15 17 24 1
В файл OUTPUT.txt в первую строку необходимо записать все нечетные элементы, во вторую все четные, в третью YES если четных больше или равно, иначе NO
Code
1
2
3
29 7 15 17 1
4 12 24
NO
Питон изучаю первый день, до этого все задачки были легкие в 5-6 строк решение, со школы помню C++, Pascal, Delphi, VBA, поэтому особо проблем с логикой нет. Не программировал лет 7 ни на чем.

Эту задачу решил вот таким образом, как ниже написано. Сперва ошибки были, что переменные не идентифицируются, вообще никакие, поэтому ввел их в начале
Code
1
2
3
4
5
C:\Python\5>5.py
Traceback (most recent call last):
  File "C:\Python\5\5.py", line 11, in <module>
    c=c.attend(a[i])
NameError: name 'c' is not defined
Еще не работает по какой то причине код для перевода строки в численный массив, пришлось гуглить другой способ
Code
1
a.append([int(s) for s in line2.split()])
И самый важный вопрос для меня на данный момент: как уменьшить размер кода, какие операторы заменить или переоформить? Я что нагуглить смог то и использовал, знания в питоне нулевые совсем, не знаю, с чего начать.
Что можно и как оптимизировать?
Код полностью рабочий, но, мне кажется, его можно уменьшить многократно.
Питон начал изучать для себя, решаю задачки на acmp, не нашел там примеров решения.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
with open('INPUT.txt') as f:
    n = f.readline()
    n = int(n)
    y=0
    x=0
    b=[]
    c=[]
    line2 = f.readline()
    a=list(map(int, line2.split()))
for i in range(n):
    if a[i] % 2 == 0:
        b.append(a[i])
        x=x+1
    else:
        c.append(a[i])
        y=y+1
if y > x:
    z="NO"
else:
    z="YES"
with open('OUTPUT.txt', 'w') as o:
    for element in c:
        o.write(str(element)+" ")
    o.write('\n')
    for element in b:
        o.write(str(element)+" ")
    o.write('\n')
    o.write(z)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2022, 09:45
Ответы с готовыми решениями:

Сравнить количество четных и нечетных элементов в массиве
Я чайник ,чайником ,помогите написать код и желательно обьяснить

Посчитать количество четных и нечетных положительных элементов
как Посчитать Количество четных и нечетных положительных элементов в delphi ?

Посчитать количество четных и нечетных элементов одномерного массива
Дан одномерный массив n-количества посчитать количество четных и нечетных элементов если количество четных элементов больше нечетных найти...

6
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.11.2022, 09:51
Не проверял
Python
1
2
3
4
5
6
7
8
with open('in.txt', 'r') as f_in, open('out.txt', 'w') as f_out:
    f_in.readline()
    nums = map(int, f_in.readline().split())
    evens = [f'{i}' for i in nums if i%2==0]
    odds = [f'{i}' for i in nums if i%2==1]
    f_out.write(' '.join(evens)+'\n')
    f_out.write(' '.join(odds)+'\n')
    f_out.write('YES' if evens > odds else 'NO')
3
15 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 57
25.11.2022, 10:17  [ТС]
iSmokeJC,
Выводит вот так
Code
1
2
3
4 12 24
 
YES
т.е. не выводит нечетные и не сравнивает их с четными
Пытался понять, что не так, не допёр
0
 Аватар для VistaSV30
986 / 330 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
25.11.2022, 10:24
Python
1
2
3
4
5
6
7
8
9
10
11
12
with open('input.txt') as f:
    t = f.readlines()
    
n = int(t[0])
m = t[1].split()
 
a = 0
for i in m:
    if int(i) % 2 == 0:
        a += 1
 
print(f'Количество четных - {a}, нечетных {n-a}.')
1
15 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 57
25.11.2022, 10:26  [ТС]
iSmokeJC,
Python
1
2
3
4
5
6
7
8
9
10
11
with open('INPUT.txt', 'r') as f_in, open('OUTPUT.txt', 'w') as f_out:
    f_in.readline()
    nums = map(int, f_in.readline().split())
    print(nums)
    evens = [f'{i}' for i in nums if i%2==1]
    odds = [f'{i}' for i in nums if i%2==0]
    print(evens)
    print(odds)
    f_out.write(' '.join(evens)+'\n')
    f_out.write(' '.join(odds)+'\n')
    f_out.write('YES' if evens > odds else 'NO')
Добавил вывод, чтобы понять, что не так, вот что выдает:
Code
1
2
3
4
5
6
C:\Python\5>51.py
<map object at 0x000000000285F148>
['29', '7', '15', '17', '1']
[]
 
C:\Python\5>
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
25.11.2022, 10:59
Ну да
Python
1
nums = list(map(int, f_in.readline().split()))
Добавлено через 1 минуту
Python
1
f_out.write('YES' if len(evens) >= len(odds) else 'NO')
1
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
25.11.2022, 11:39
or:
Python
1
2
3
4
5
6
7
with open('in.txt') as f_read, open('out.txt', 'w') as f_write:
    lst = f_read.readlines()[1].split()
    evens = []
    odds = [val for val in [int(i) if int(i) & 1 else evens.append(int(i)) for i in lst] if val]
    print(*odds, file=f_write)
    print(*evens, file=f_write)
    print('YES' if len(evens) >= len(odds) else 'NO', file=f_write)
Добавлено через 10 минут
4 строчку можно проще
Python
1
odds = [val for val in [i if int(i) & 1 else evens.append(i) for i in lst] if val]
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2022, 11:39
Помогаю со студенческими работами здесь

Посчитать количество нулевых, четных и нечетных элементов массива
Здравствуйте. Мне необходимо сделать вставку в Си на ассемблере. Алгоритм должен выполняться именно на нем. Суть задания следующая: дан...

Посчитать количество четных, нечетных и нулевых элементов массива
Написать программу, которая обеспечивает ввод одномерного массива целых чисел 25 элементов с клавиатуры и вычисляет количество четных,...

Посчитать количество четных элементов массива на нечетных местах
Здравствуйте, дана строка в регистре Ds, с числами от 1 до 15 необходимо написать код, который посчитает количество четных элементов на...

Посчитать отдельно количество четных и нечетных элементов массива
напишите программу которая заполняет массив 15 элементов случайными числами из отрезка и считает отдельно количество четных и нечетных...

Вводится последовательность цифр. Посчитать количество четных и сумму нечетных элементов
С клавиатуры вводится последовательность цифр. Вывести на экран количество четных и сумму нечетных элементов. Tasm, DOSBox


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru