15 / 14 / 5
Регистрация: 19.11.2014
Сообщений: 57

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

25.11.2022, 09:45. Показов 2333. Ответов 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
987 / 331 / 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! в-строка - входное арифметическое выражение в инфиксной(обычной). . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru