Решение задач python: Задачи по Python с решением. Программирование для начинающих

Содержание

🐍🧩 5 задач по Python для новичков с решениями

1. Список примерных студентов

Декану факультета захотелось узнать, какие студенты посетили все лекции с начала учебного года. Для каждой лекции есть список присутствовавших студентов. Напишите программу, определяющую фамилии студентов, которые не пропустили ни одной лекции.

Входные данные:

В первой строке подается число m – количество лекций, проведенных с начала учебного года. Далее идут m блоков строк со списками студентов. На первой строке каждого блока указано количество фамилий n, а затем идут n строк с фамилиями тех, кто был на лекции.

#Пример ввода
3
3
Иванов
Петрова
Сидорова
4
Иванов
Петрова
Михайлова
Колесников
3
Петрова
Иванов
Колесников

    

Выходные данные:

Программа должна вывести список студентов, посетивших все лекции, в алфавитном порядке.

#Пример вывода
Иванов
Петрова

    

Способ 1:

n = int(input())
res = {input() for _ in range(int(input()))}
for _ in range(n - 1):
    res &= {input() for _ in range(int(input()))}
  
print(*sorted(res), sep='\n')
    
    

Способ 2:

res = [set(input() for _ in range(int(input()))) for _ in range(int(input()))]
print(*sorted(set.intersection(*res)), sep='\n')
    
    

Способ 3:

n = int(input())
my_set = {frozenset(input() for _ in range(int(input()))) for _ in range(n)}
res = frozenset.intersection(*my_set)
print(*sorted(res), sep='\n')
    
    

2. Сортировка IP-адресов

Напишите программу, которая считывает IP-адреса и выводит их в порядке возрастания в соответствии с десятичным представлением. Чтобы перевести адрес, к примеру 192.168.1.2 в десятичное число, применяют формулу:

192 х 2563 + 168 x 2562 + 1 x 2561 + 2 x 256

0 = 3232235778

Входные данные:

В первой строке подается число n, затем n строк с IP-адресами.

#Пример ввода
12
123.199.44.25
123.199.201.245
145.198.168.93
170.67.181.62
170.67.222.111
170.67.11.90
45.8.106.59
203.13.32.156
179.67.171.194
179.67.181.62
179.67.212.111
177.67.10.90

    

Выходные данные:

Список IP-адресов, отсортированных по десятичному представлению.

#Пример вывода
45.8.106.59
123.199.44.25
123.199.201.245
145.198.168.93
170.67.11.90
170.67.181.62
170.67.222.111
177.67.10.90
179.67.171.194
179.
67.181.62 179.67.212.111 203.13.32.156

Решение

Способ 1 – с использованием ipaddress:

import ipaddress
n = int(input())
spisok = []
for i in range(n):
    temp = input()
    spisok.append(temp)
sortedkey = sorted(spisok, key = ipaddress.IPv4Address)
print(*sortedkey, sep='\n')
    
    

Способ 2:

print(*sorted([input() for _ in range(int(input()))], key=lambda x: [*map(int, x.split('.'))]), sep='\n')
    
    

Способ 3:

def decFormat(ip):
    return sum(map(lambda x, y: int(x) * 256 ** y, ip.split('.'), (3, 2, 1, 0)))
ips = [input() for _ in range(int(input()))]
print(*sorted(ips, key = decFormat), sep = '\n')
    
    

3. Сортировка по гематрии

Гематрия – это сумма числовых значений букв, входящих в состав слова. В данном случае числовое значение букв определяется по таблице ASCII, причем учитываются только заглавные буквы (то есть при подсчете гематрии все буквы переводятся в верхний регистр). Программа должна вывести список слов в исходном регистре, отсортированный в соответствии с гематрией.

Входные данные:

Число n, затем n строк с английскими словами, состоящими из букв в разных регистрах.

#Пример ввода
5
cAndy
WAffle
chocolaTE
Cake
tirAMIsu

    

Выходные данные:

Список, отсортированный в соответствии с гематрией слов.

#Пример вывода
Cake
cAndy
WAffle
chocolaTE
tirAMIsu

    

Решение

Способ 1:

def gemValue(word):
    return sum(map(lambda l: ord(l.upper()) - ord('A'), word)), word
words = [input() for _ in range(int(input()))]
print(*sorted(words, key=gemValue), sep='\n')
    
    

Способ 2:

words = [input() for _ in range(int(input()))]
print(*sorted(sorted(words), key=lambda word: sum([ord(sym. upper()) - ord('A') for l in word])), sep='\n')
    
    

Способ 3:

print(*sorted([input() for _ in range(int(input()))],
             key=lambda x: (sum([ord(_) - ord('A') for _ in x.upper()]), x)),
     sep='\n')
    
    

4. Группировка дубликатов

На вход подается строка символов, разделенных пробелами. Напишите программу, которая группирует одинаковые символы, формируя вложенный список.

Входные данные:

#Пример ввода
h h h e e l l l o w w o o o o r r r l l d d

    

Выходные данные:

#Пример вывода
[['h', 'h', 'h'], ['e', 'e'], ['l', 'l', 'l'], ['o'], ['w', 'w'], ['o', 'o', 'o', 'o'], ['r', 'r', 'r'], ['l', 'l'], ['d', 'd']]
    

Решение

Вариант 1 – с itertools:

from itertools import groupby
print([list(group) for key, group in groupby(input(). split())])
    
    

Вариант 2:

res = []
for i in input().split():
    res.append([i]) if not res or i not in res[-1] else res[-1].append(i)
print(res)
    
    

Вариант 3:

res = []
for i in input().split():
    if (not res) or (i != res[-1][-1]):
        res.append([i])
    else:
        res[-1].append(i)
print(res)
    
    

5. Разделение списка на отрезки

На вход подается строка символов, из которых формируется список и число n. Напишите функцию, которая разбивает список на n частей, формируя вложенный список.

Входные данные:

#Пример ввода
w t z k p e h t b
3
    

Выходные данные:

#Пример вывода
[['w', 't', 'z'], ['k', 'p', 'e'], ['h', 't', 'b']]
    

Решение

Способ 1:

def cutList(n):
    cuts = [lst[x:x+n] for x in range(0, len(lst), n)]
    return cuts
lst = input(). split()
n = int(input())
print(cutList(n))
    
    

Способ 2:

def cutList(lst: list, n: int) -> list:
    return [lst[i:n + i] for i in range(0, len(lst), n)]
print(cutList(input().split(), int(input())))
    
    

Способ 3:

def cutList(lst, n):
    for i in range(0, len(lst), n):
        yield lst[i:i + n]
print(list(cutList(input().split(), int(input()))))
    
    

***

Материалы по теме

  • 🐍🧩 Словари в Python: 12 задач для начинающих с решениями
  • 🐍🧩 5 классических задач по Python для начинающих с решениями
  • 🐍🧩 Задача о поврежденной XML-строке

Задачи по программированию (на языке Python) — Страница 2 — ewoqi1290u3

Рубрика для предоставления решения практических задач (на языке Python).

Posted on

Задачи по программированию (на языке Python)

Заданы M строк символов, которые вводятся с клавиатуры. Найти количество символов в самой длинной строке. Выровнять строки по самой длинной строке, поставив перед каждой строкой…

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Подсчитать количество чисел, делящихся на 3 нацело, и среднее арифметическое чисел с чётными значениями. Поставить полученные величины…

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Определить, имеются ли в массиве два подряд идущих нуля.

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Вместо каждого элемента с нулевым значением поставить сумму двух предыдущих элементов массива.

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Исключить из массива элементы, принадлежащие промежутку [B; C].

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Дано положительное число T. Разделить это число между положительными элементами массива пропорционально значениям этих элементов и добавить…

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Добавить к элементам массива такой новый элемент, чтобы сумма элементов с положительными значениями стала бы равна модулю…

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Добавить столько элементов, чтобы элементов с положительными и отрицательными значениями стало бы поровну.

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Из элементов исходного массива построить два новых. В первый должны входить только элементы с положительными значениями, а…

Continue Reading

Posted on Задачи по программированию (на языке Python)

Дан одномерный массив числовых значений, насчитывающий N элементов. Определить, образуют ли элементы массива, расположенные перед первым отрицательным элементом, убывающую последовательность.

Continue Reading

Python Упражнения, Практика, Проблемы — PYnative

Бесплатные упражнения по программированию для разработчиков Python. Упражнения охватывают Python Основы , Структура данных , до Анализ данных . На данный момент эта страница содержит 18 упражнений.

Что включено в эти упражнения Python?

Каждое упражнение содержит конкретных темы Python, вопроса, которые вам нужно попрактиковать и решить. Эти бесплатные упражнения — не что иное, как задания Python для практики, когда вам нужно решать различные программы и задачи.

  • Все упражнения протестированы на Python 3.
  • В каждом упражнении 10-20 вопросов.
  • Ответ предоставляется на каждый вопрос.
  • Отработайте каждое упражнение в онлайн-редакторе кода

Эти упражнения по программированию на Python подходят для всех разработчиков Python. Если вы новичок, после выполнения этих упражнений вы лучше поймете Python. Ниже приведен список упражнений.

Выберите упражнение, которое хотите решить .

Практикуйте и быстро изучайте необходимые навыки Python, решая простые вопросы и задачи.

Темы : переменные, операторы, циклы, строки, числа, список

Решение операций ввода и вывода в Python. Также мы практикуем работу с файлами.

Темы : print() и input() , File I/O

Это упражнение по циклу в Python призвано помочь разработчикам попрактиковаться в методах ветвления и создания циклов в Python.

Темы : операторы if-else, цикл и цикл while.

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

Темы : Аргументы функций, встроенные функции.

Упражнение Solve Python String для изучения и практики операций и манипуляций со строками.

Практика широко используемых типов Python, таких как List, Set, Dictionary и Tuple, в Python

Цель этого упражнения со списками Python — помочь разработчикам Python изучить и попрактиковаться в операциях со списками.

Это упражнение по словарю Python призвано помочь разработчикам Python изучить и попрактиковаться в работе со словарем.

Это упражнение призвано помочь разработчикам Python изучить и попрактиковаться в операциях над множествами.

Это упражнение призвано помочь разработчикам Python изучить и попрактиковаться в операциях с кортежами.

Это упражнение призвано помочь разработчикам Python изучить и попрактиковаться в вопросах и проблемах с датой и временем и отметками времени.

Темы : Дата, время, ДатаВремя, Календарь.

Это упражнение по объектно-ориентированному программированию Python (ООП) призвано помочь разработчикам Python изучить и применить на практике концепции ООП.

Темы : Объект, Классы, Наследование

Практика и изучение создания JSON, манипулирование, кодирование, декодирование и синтаксический анализ с использованием Python и расщепление и многое другое.

Практика анализа данных с использованием Python Pandas. Практика Data-frame, выбор данных, группировка, серия, сортировка, поиск и статистика.

Практика визуализации данных с использованием Python Matplotlib. Линейный график, свойства стиля, многолинейный график, точечный график, гистограмма, гистограмма, круговая диаграмма, подграфик, стековый график.

Практика и изучение различных методов генерации случайных данных в Python.

Темы : случайный модуль, модуль секретов, модуль UUID

Практикуйте навыки программирования баз данных Python, решая вопросы шаг за шагом.

Используйте любой из MySQL, PostgreSQL, SQLite для решения упражнения

Упражнения для разработчиков среднего уровня

Следующие практические вопросы предназначены для разработчиков Python среднего уровня.

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

Упражнение 1.

Переверните каждое слово строки

Получено :

 str = 'Меня зовут Джесса' 

Ожидаемый результат

 yM emaN si asseJ 
Показать подсказку
    • для разделения строки из 900 слов4. .
    • Перевернуть каждое слово из списка
    • наконец, используйте функцию join() для преобразования списка в строку
    Показать решение

    Шаги для решения этого вопроса :

    • Разделить заданную строку на список слов, используя разделить() метод
    • Используйте понимание списка, чтобы создать новый список, перевернув каждое слово из списка.
    • Используйте функцию join() для преобразования нового списка в строку
    • Показать результирующую строку

    Решение :

     # Упражнение на перестановку каждого слова строки
    def reverse_words (предложение):
        # Разделить строку по пробелу
        слова = Предложение. split(" ")
    
        # перебираем список и переворачиваем каждое слово, используя ::-1
        new_word_list = [слово[::-1] для слова словами]
        
        # Присоединение к новому списку слов
        res_str = " ".join(new_word_list)
        вернуть res_str
    
    # заданная строка
    str1 = "Меня зовут Джесса"
    печать (обратные_слова (str1))
     

    Упражнение 2. Считайте текстовый файл в переменную и замените все символы новой строки пробелом

    Дано : Предположим, у вас есть следующий текстовый файл (sample.txt).

     Линия 1
    строка2
    строка3
    строка4
    строка5 

    Ожидаемый вывод :

     Строка1 строка2 строка3 строка4 строка5 
    Показать подсказку
    • Сначала прочтите текстовый файл.
    • Затем используйте функцию string replace() для замены всех новых строк ( \n ) пробелом ( '' ).
    Показать решение

    Шаги для решения этого вопроса : –

    • Сначала откройте файл в режиме чтения
    • Затем считайте все содержимое файла с помощью функции read() и назначьте его переменной.
    • Затем используйте функцию string replace() для замены всех символов новой строки ( \n ) пробелом ( ' ' ).
    • Показать последнюю строку
     с файлом open('sample.txt', 'r'):
        данные = файл.read().replace('\n', '')
        печать (данные) 

    Упражнение 3. Удаление элементов из списка во время итерации

    Описание :

    В этом вопросе вам нужно удалить элементы из списка во время итерации, но без создания другой копии списка.

    Удалите числа больше 50

    , данный :

     number_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] 

    Ожидаемая выход : –

     [10 , 20, 30, 40, 50] 
    Показать подсказку
    • Получить размер списка
    • Перебор списка с использованием цикла while
    • Проверить, больше ли число 50
    • Если да, удалите элемент, используя ключевое слово del
    • Уменьшить размер списка
    Показать решение

    Решение 1. Использование цикла while

     number_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
    я = 0
    # получить размер списка
    n = длина (число_список)
    # итерировать список, пока i не станет меньше n
    пока я < п:
        # проверяем, больше ли число 50
        если число_список[i] > 50:
            # удалить текущий индекс из списка
            del number_list[i]
            # уменьшить размер списка
            п = п - 1
        еще:
            # перейти к следующему элементу
            я = я + 1
    печать (номер_список) 

    Решение 2. Использование цикла for и range()

     number_list = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
    для i в диапазоне (len (number_list) - 1, -1, -1):
        если число_список[i] > 50:
            del number_list[i]
    печать (номер_список) 

    Упражнение 4: Обратное преобразование словаря

    Дано :

     ascii_dict = {'A': 65, 'B': 66, 'C': 67, 'D': 68} 

    Ожидаемый результат 909004 :

     {65: "А", 66: "В", 67: "С", 68: "Г"} 
    Показать решение
     ascii_dict = {'A': 65, 'B': 66, 'C': 67, 'D': 68}
    # Обратное отображение
    new_dict = {значение: ключ для ключа, значение в ascii_dict. items()}
    печать (новый_дикт) 

    Упражнение 5: Показать все повторяющиеся элементы из списка

    Задано :

     

     [20, 60, 30] 
    Показать подсказку
    1. Использовать метод counter() модуля сбора.
    2. Создайте словарь, в котором будет вестись подсчет каждого элемента списка. Затем выберите все ключи, значение которых больше 2
    3. .
    Показать Решение

    Решение 1 : - Использование коллекций.Counter()

     импорт коллекций
    
    sample_list = [10, 20, 60, 30, 20, 40, 30, 60, 70, 80]
    
    дубликаты = []
    для элемента количество в collections.Counter(sample_list).items():
        если количество > 1:
            дубликаты.append(элемент)
    печать(дубликаты) 

    Решение 2 : -

     sample_list = [10, 20, 60, 30, 20, 40, 30, 60, 70, 80]
    существует = {}
    дубликаты = []
    
    для x в sample_list:
        если x не существует:
            существует [х] = 1
        еще:
            дубликаты. append(x)
    печать(дубликаты) 

    Упражнение 6. Фильтрация словаря по ключам, присутствующим в заданном списке d1 = {'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'Ф': 70} # Отфильтровать dict, используя следующие ключи l1 = ['A', 'C', 'F']

    Ожидаемый результат : –

     new dict {'A': 65, 'C': 67, 'F': 70} 
    Показать решение
     # Словарь
    d1 = {'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'F': 70}
    # Отфильтровать dict, используя следующие ключи
    l1 = ['А', 'С', 'F']
    new_dict = {key: d1[key] для ключа в l1}
    печать (новый_дикт) 

    Упражнение 7. Выведите следующий шаблон чисел

     1 1 1 1 1
    2 2 2 2
    3 3 3
    4 4
    5 

    Для решения этого вопроса обратитесь к шаблонам печати в Python.

    Показать подсказку
    • установить x = 0
    • Используйте два для петель
    • Внешний цикл является обратным для цикла от 5 до 0
    • Увеличение значения x на 1 в каждой итерации внешнего цикла
    • Внутренний цикл будет повторяться от 0 до значения i внешнего цикла
    • Вывести значение x на каждой итерации внутреннего цикла
    • Печатать новую строку в конце каждого внешнего цикла
    Показать решение
     строк = 5
    х = 0
    # реверс for цикла с 5 на 0
    для i в диапазоне (строки, 0, -1):
        х += 1
        для j в диапазоне (1, i + 1):
            печать (х, конец = ' ')
        печать('\г') 

    Упражнение 8.

    Создание внутренней функции

    Описание вопроса : –

    • Создайте внешнюю функцию, которая будет принимать две строки, x и y . ( х = 'Эмма' и г = 'Келли' .
    • Создайте внутреннюю функцию внутри внешней функции, которая будет объединять x и y.
    • Наконец, внешняя функция присоединит к ней слово “разработчик”.

    Ожидаемый результат : –

     EmmaKellyDevelopers 
    Показать решение
     def manage(x, y):
        # объединить две строки
        определение внутреннее_забава (х, у):
            вернуть х + у
    
        г = внутреннее_развлечение (х, у)
        вернуть z + «Разработчики»
    
    результат = манипулировать('Эмма', 'Келли')
    печать (результат)
     

    Упражнение 9. Изменение элемента вложенного списка внутри следующего списка

    Измените элемент 35 на 3500

    Дано :

     list1 = [5, [10, 15, [20, 25, [30, 35] ], 40], 45], 50] 

    Ожидаемый результат : –

     [5, [10, 15, [20, 25, [30, 3500], 40], 45], 50] 
    Показать решение
     список1 = [5, [10, 15, [20, 25, [30, 35], 40], 45], 50]
    # изменить элемент
    список1[1][2][2][1] = 3500
    # вывести окончательный результат
    печать (список1)
    
    # print(list1[1]) = [10, 15, [20, 25, [30, 400], 40], 45]
    # print(list1[1][2]) = [20, 25, [30, 400], 40]
    # print(list1[1][2][2]) = [30, 40]
    # print(list1[1][2][2][1]) = 40 

    Упражнение 10.

    Доступ к приращению вложенного ключа из следующего словаря

    Given :

     emp_dict = {
        "компания": {
            "сотрудник": {
                "имя": "Джесс",
                "к оплате": {
                    "зарплата": 9000,
                    "приращение": 12
                }
            }
        }
    } 
    Показать решение
     emp_dict = {
        "компания": {
            "сотрудник": {
                "имя": "Джесс",
                "к оплате": {
                    "зарплата": 9000,
                    "приращение": 12
                }
            }
        }
    }
    print(emp_dict['компания']['сотрудник']['оплачиваемый']['приращение']) 

    В разделе Упражнения: –

    Решение проблем, программирование на Python и видеоигры

    Об этом курсе

    90 630 последних просмотров

    Этот курс представляет собой введение в информатику и программирование на Python. После успешного завершения этого курса вы сможете:

    Гибкие сроки

    Гибкие сроки

    Сброс сроков в соответствии с вашим графиком.

    Совместно используемый сертификат

    Совместно используемый сертификат

    Получите сертификат по завершении

    100% онлайн

    100% онлайн

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

    Начальный уровень

    Начальный уровень

    Часов для завершения

    Прибл. 80 часов

    Доступные языки

    Английский

    Субтитры: арабский, французский, португальский (европейский), китайский (упрощенный), итальянский, вьетнамский, немецкий, русский, английский, испанский

    Навыки, которые вы приобретете

    • Синтаксис и семантика Python
    • Видеоигры
    • Программирование на Python
    • Решение проблем
    • Информатика
    Гибкие сроки в соответствии000 с установленными сроками

    Гибкие сроки

    Гибкие сроки

    Совместно используемый сертификат

    Совместно используемый сертификат

    Получите сертификат по завершении

    100% онлайн

    100% онлайн

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

    Начальный уровень

    Начальный уровень

    Часов до завершения

    Прибл. 80 часов

    Доступные языки

    Английский

    Субтитры: арабский, французский, португальский (европейский), китайский (упрощенный), итальянский, вьетнамский, немецкий, русский, английский, испанский

    Инструкторы

    Дуэйн Шафрон

    Профессор

    Информатика

    58 393 Учащиеся

    1 Курс

    Пол Лу

    Профессор

    Computing Science

    58,393 Учащиеся

    1 Курс

    , предлагаемые

    Университет Альберты

    Ualberta. Как один из лучших университетов Канады, мы известны своим превосходством в гуманитарных, естественных, творческих, деловых, инженерных и медицинских науках.

Оставить комментарий