• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Как реализовать две задумки в Python?

shinenvice034

Active member
11.08.2020
42
0
BIT
0
Здравствуйте! Нужна помощь с двумя идеями, которые нужно реализовать на Python.
Идея первая. Допустим, у меня есть число 94823. Мне нужно разбить его так, чтобы в одном списке были первые две цифры числа, а последние 3 цифры числа - в другом списке.
Идея вторая. Допустим, у меня есть список с четным количеством элементов, к примеру [124, 45, 57, 52, 122, 97]. Количество элементов может быть любым, но главное чтобы оно было четным. Затем мне нужно для каждой пары из 2ух чисел (на моем примере для пар 124 и 45, 57 и 52, 122 и 97) найти их сумму и произведение, а затем отнять от произведения сумму. Далее формируется новый список из результата этих действий, над ним проделываются такие же самые действия. И так они должны повторяться до тех пор, пока все не сведется к одному числу, т.е в какой-то момент времени из-за этих действий должен остаться список из двух чисел, над ними произведутся нужные операции и останется одно число.
 
Решение
Можно пожалуйста подробнее со 2 идеей? Я сделал это через цикл for, но я не знаю как сделать чтобы оно формировало новые списки. Я в Python не новичок, но опыта достаточно мало чтобы такое сделать
Как-то так. Код проходит по списку только один раз - допиливай цикл уже самостоятельно.
ЗЫ. Из списка после первого прохода мы должны получить 3 элемента, что не позволит пройтись по нему второй раз. Чтобы получилось по условиям задачи, список должен быть кратным 4-ем.

Python:
list_in = [124, 45, 57, 52, 122, 97]

def do_something(input_list):
    if len(input_list) % 2 != 0:
        print('Number of elements in list is not even. Exiting.')
        exit()

    # Index of first and second item in list
    i1 = 0
    i2 = 1

    new_list =...

DragonFly

Green Team
01.06.2020
222
65
BIT
6
По первому. Есть число, нужно получить каждую цифру отдельно
Может есть функция, но первое что приходит в голову. Сначала получаем остаток от деления на 10, это будет последняя цифра, запоминаем ее в списке, потом делим целочисленно на 10, это будет новое число без последней цифры . Ну и так пока все цифры не выделишь ,

А второе тоже подумай, тут не сколько как реализовать на питоне, а подумать слегка, алгоритм сначала придумай как делать будете все это. Или домашку лень делать и мозгами шевелить? 😃
 

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
Идея первая. Допустим, у меня есть число 94823. Мне нужно разбить его так, чтобы в одном списке были первые две цифры числа, а последние 3 цифры числа - в другом списке.
Можно делать, например, так:
Код:
In [12]: a = 94823

In [13]: print(a//1000)
94

In [14]: print(a%1000)
823
Возможно есть более красивое решение, но тут не ясно, для чего это вообще изначально нужно.

Идея вторая. Допустим, у меня есть список с четным количеством элементов, к примеру [124, 45, 57, 52, 122, 97]. Количество элементов может быть любым, но главное чтобы оно было четным. Затем мне нужно для каждой пары из 2ух чисел (на моем примере для пар 124 и 45, 57 и 52, 122 и 97) найти их сумму и произведение, а затем отнять от произведения сумму. Далее формируется новый список из результата этих действий, над ним проделываются такие же самые действия. И так они должны повторяться до тех пор, пока все не сведется к одному числу, т.е в какой-то момент времени из-за этих действий должен остаться список из двух чисел, над ними произведутся нужные операции и останется одно число.
1. Берёшь 2 переменных, начиная с 0 и 1
2. В цикле, по индексу из п.1., выдёргиваешь елементы из списка и проводишь с ними нужные операции
3. Добавляешь результат в новый список
4. Инкрементируешь переменные из п.1 на +2.
5. Повторяешь цикл из п.2 до завершения списка
 

shinenvice034

Active member
11.08.2020
42
0
BIT
0
Можно делать, например, так:
Код:
In [12]: a = 94823

In [13]: print(a//1000)
94

In [14]: print(a%1000)
823
Возможно есть более красивое решение, но тут не ясно, для чего это вообще изначально нужно.


1. Берёшь 2 переменных, начиная с 0 и 1
2. В цикле, по индексу из п.1., выдёргиваешь елементы из списка и проводишь с ними нужные операции
3. Добавляешь результат в новый список
4. Инкрементируешь переменные из п.1 на +2.
5. Повторяешь цикл из п.2 до завершения списка
Можно пожалуйста подробнее со 2 идеей? Я сделал это через цикл for, но я не знаю как сделать чтобы оно формировало новые списки. Я в Python не новичок, но опыта достаточно мало чтобы такое сделать
 
Последнее редактирование:

Pernat1y

Well-known member
05.04.2018
1 443
135
BIT
0
Можно пожалуйста подробнее со 2 идеей? Я сделал это через цикл for, но я не знаю как сделать чтобы оно формировало новые списки. Я в Python не новичок, но опыта достаточно мало чтобы такое сделать
Как-то так. Код проходит по списку только один раз - допиливай цикл уже самостоятельно.
ЗЫ. Из списка после первого прохода мы должны получить 3 элемента, что не позволит пройтись по нему второй раз. Чтобы получилось по условиям задачи, список должен быть кратным 4-ем.

Python:
list_in = [124, 45, 57, 52, 122, 97]

def do_something(input_list):
    if len(input_list) % 2 != 0:
        print('Number of elements in list is not even. Exiting.')
        exit()

    # Index of first and second item in list
    i1 = 0
    i2 = 1

    new_list = []

    while True:
        # Check if index in range of list
        if i1 >= len(list_in):
            return new_list

        # Get item from the list by its index
        a = list_in[i1]
        b = list_in[i2]
        print(f'Item 1: {a}, item 2: {b}')

        new_list.append((a * b) - (a + b))

        # Increment counters
        i1 += 2
        i2 += 2

print(do_something(list_in))
 
Решение

shinenvice034

Active member
11.08.2020
42
0
BIT
0
Как-то так. Код проходит по списку только один раз - допиливай цикл уже самостоятельно.
ЗЫ. Из списка после первого прохода мы должны получить 3 элемента, что не позволит пройтись по нему второй раз. Чтобы получилось по условиям задачи, список должен быть кратным 4-ем.

Python:
list_in = [124, 45, 57, 52, 122, 97]

def do_something(input_list):
    if len(input_list) % 2 != 0:
        print('Number of elements in list is not even. Exiting.')
        exit()

    # Index of first and second item in list
    i1 = 0
    i2 = 1

    new_list = []

    while True:
        # Check if index in range of list
        if i1 >= len(list_in):
            return new_list

        # Get item from the list by its index
        a = list_in[i1]
        b = list_in[i2]
        print(f'Item 1: {a}, item 2: {b}')

        new_list.append((a * b) - (a + b))

        # Increment counters
        i1 += 2
        i2 += 2

print(do_something(list_in))
Большое спасибо!!!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!