Задачи для программиста

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
Публикуйте в этом разделе задачи.
 

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
1. В переменной _list записан список строк и целых чисел.
Задание: написать программу, склеивающую строки в строку содержащуюся в переменной string, а целые числа склеивающая в порядке очерёдности в целое число.
 
Последнее редактирование:

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Идея создать такую тему интересная, спасибо за задачку
1. Если числа заданы явно <class 'int'>
Python:
_list = ['Эта', 1, 'программа', 2, 'объединяет', 'строки', 3, 4, 'и', 5, 'числа']
strings, digits = [], []
for value in _list:
    if type(value) == str:
        strings.append(value)
    else:
        digits.append(value)
print(*strings)
print(*digits)
2. Если числа заданы как строка <class 'str'>
Python:
_list = ['Эта', '1', 'программа', '2', 'объединяет', 'строки', '3', '4', 'и', '5', 'числа']
strings, digits = [], []
for value in _list:
    checker = value.isdigit()
    if checker == True:
        digits.append(value)
    else:
        strings.append(value)

print(*strings)
print(*digits)
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
2. Задача: Программа принимает на вход список чисел через пробел, выводит на экран также через пробел все значения, которые повторялись более одного раза:
Пример:
Input -->
0 0 1 3 5 3 8 9 8 8
Output --> 0 3 8
Пример:
Input --> 1 1 1 1 1 2 2 2
Output --> 1 2
Пример:
Input --> 10
Output --> (None)
 
Последнее редактирование модератором:

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
Немного говнокода:
Python:
_list = [int(a) for a in input().split()]
output = ''
teams = []
for a in _list:
    cleaned_list = _list.remove(a)
    try:
        _list.index(a)
    except:
        continue
    else:
        teams.append(str(a))
output = ' '.join(teams)
print(output)
input()
 
  • Мне нравится
Реакции: Vlad_SD

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
3. "Все говорят %s, а ты купи слона!"
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Python:
while True:
    say = input('назовите слово ')
    print(f"Все говорят {say}, а ты купи слона!")

наверное это имелось в виду ))
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Программа считывает из первой строки значения в список _list, затем считывает одно значение "x" из второй строки и выводит на каких позициях находится число x в списке _list, если такого числа в списке нет, то вывести "нет такого числа"
пример:
Input --> 6 7 1 6 8 4 1 6
6
Output --> 0 3 7
пример:
Input --> 4 8 2 1 3 8 4 33
11
Output --> нет такого числа
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Программа считывает из первой строки значения в список _list, затем считывает одно значение "x" из второй строки и выводит на каких позициях находится число x в списке _list, если такого числа в списке нет, то вывести "нет такого числа"
пример:
Input --> 6 7 1 6 8 4 1 6
6
Output --> 0 3 7
пример:
Input --> 4 8 2 1 3 8 4 33
11
Output --> нет такого числа
Решение с циклом:
Python:
_list = input().split()
x = input()
if x not in _list:
    print('Нет такого числа')
else:
    for i, item in enumerate(_list):
        if item == x:
            print(i, end=' ')
Решение с List comprehension:
Python:
_list = input().split()
x = input()
y = ' '.join([str(i) for i, s in enumerate(_list) if s == x])
print('Нет такого числа' if not y else y)
Решение с Dictionary Comprehension:
Python:
_list = input().split()
x = input()
d = {str(i): s for i, s in enumerate(_list) if s == x}
print(' '.join(d.keys()) if d else 'Нет такого числа')
 
  • Мне нравится
Реакции: Vlad_SD

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
Ваша задача?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Программа считывает символы из строки в список _list, затем выводит строку, состоящую из символов и их количества в строке.
Пример:
Input --> afnaongonaag
Output --> a4f1n3o2g2
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Программа считывает символы из строки в список _list, затем выводит строку, состоящую из символов и их количества в строке.
Пример:
Input --> afnaongonaag
Output --> a4f1n3o2g2
Python:
user_input = 'afnaongonaag'
_list = []
n = 1
for i in sorted(user_input):
    _list.append(i)

for j in range(len(_list)-1):
    if _list[j] != _list[j+1]:
        print(_list[j] + str(n), end='')
        n = 1
    else:
        n += 1

Хотел еще какой-нибудь способ придумать, но кроме такого ничего в голову не приходит)
 
Последнее редактирование:

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Есть кабинет с программистами, нужно написать программу, которая правильно формирует окончание слова, то есть 1 программист, 2 программиста и тд. На вход подаётся число программистов, в кабинете может быть и 1000 программистов и 0.
примеры:
input --> 1
output --> 1 программист
input --> 0
output --> 0 программистов
input --> 2
output--> 2 программиста
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Есть кабинет с программистами, нужно написать программу, которая правильно формирует окончание слова, то есть 1 программист, 2 программиста и тд. На вход подаётся число программистов, в кабинете может быть и 1000 программистов и 0.
примеры:
input --> 1
output --> 1 программист
input --> 0
output --> 0 программистов
input --> 2
output--> 2 программиста
Решение:
Python:
n = input()
d = {'1': '', '2': 'а', '3': 'а', '4': 'а', '01': 'ов'}
print(n + ' программист' + d.get('0' + n[-2:][:-1], d.get(n[-1], 'ов')))
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Программа принимает на вход целое число от 1 до 1000 и выводит в консоль это число, записанное римскими цифрами.
Пример:
Input --> 187
Output --> CLXXXVII
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Решение:
Python:
n = input()
d = {'1': '', '2': 'а', '3': 'а', '4': 'а', '01': 'ов'}
print(n + ' программист' + d.get('0' + n[-2:][:-1], d.get(n[-1], 'ов')))
здравствуте, не могу разобраться с решением задачи, пробовал через дебагер в pycharm, но не принесло результатов. Объясните, пожалуйста, что это за способ работы со словорями, не могу найти на форумах подобных примеров с объяснениями.
Конкретно не понимаю эту часть когда, как она определяет без условий число d.get('0' + n[-2:][:-1], d.get(n[-1], 'ов')))
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
здравствуте, не могу разобраться с решением задачи, пробовал через дебагер в pycharm, но не принесло результатов. Объясните, пожалуйста, что это за способ работы со словорями, не могу найти на форумах подобных примеров с объяснениями.
Конкретно не понимаю эту часть когда, как она определяет без условий число d.get('0' + n[-2:][:-1], d.get(n[-1], 'ов')))
Это магия. Почитайте про метод get() у словарей и его значение по умолчанию. В примере выше первый get() ищет ключ '0' + n[-2] в словаре, это нужно для того чтобы определить стоит ли на предпоследней позиции числа цифра 1, чтобы потом обработать варианты когда число заканчивается на 11, 12, 13, 14. Если такого ключа нет, то есть в числе на предпоследней позиции не 1, то срабатывает значение по умолчанию, а там второй get(), который уже обрабатывает условия 1, 2, 3, 4 на последней позиции числа то есть n[-1] и выбирает окончание и если на последней позиции число больше 4, то срабатывает его значение по умолчанию и выбирается окончание 'ов'.
 
  • Мне нравится
Реакции: Vlad_SD

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
Python:
rim_sym = [{1 : 'I', 2 : 'II', 3 : 'III', 4 : 'IV', 5 : 'V', 6 : 'VI', 7 : 'VII', 8 :'IIX', 9 : 'IX'},

           {10 :'X', 20 : 'XX', 30 : 'XXL', 40 : 'XL', 50 : 'L', 60 : 'LX', 70 : 'LXX', 80 : 'XXC', 90 : 'XC'},

           {100 : 'C', 200 : 'CC', 300 : 'CCC', 400 : 'CD', 500 : 'D', 600 : 'DC', 700 : 'DCC', 800 : 'CCM', 900 : 'CM'}]


while True:
    arab = str(input())

    rim = ''



    b = len(arab) - 1

    kf = 1 * 10 ** b



    for a in arab:

        rim = rim + rim_sym[b][int(a) * kf]

        kf /= 10

        b -= 1



    print(rim)

Стоит уточнить, что я настойчиво иду против системы и говорю, что 8 - это не VIII, а IIX.
P.S. до 1000)
 
Последнее редактирование:

God

Уже не совсем ламер.
Пользователь
Апр 11, 2020
91
15
8
8. Мне тут пароли в большом количестве нужны.. не поможете?
Длину задаёт пользователь, только цифры и кириллица.
 

LehaLaboraNt

Новичок
Пользователь
Май 25, 2020
5
0
1
самая простая задача - установить антивирус касперского))))
 

Форум IT Специалистов