Модуль 23. Задача 3. Счастливое число

Модуль 23. Задача 3. Счастливое число

Напишите программу, которая запрашивает у пользователя число до тех пор, пока сумма этих чисел не станет больше либо равна 777. Каждое введённое число при этом дозаписывается в файл out_file.txt. Сделайте так, чтобы перед дозаписью программа с вероятностью 1 к 13 выбрасывала пользователю случайное исключение и завершалась.

Пример 1

Введите число: 10
Введите число: 500
Введите число: 200
Введите число: 67
Вы успешно выполнили условие для выхода из порочного цикла!
Содержимое файла out_file.txt:
10
500
200
67

Пример 2

Введите число: 10
Введите число: 500
Вас постигла неудача!
Содержимое файла out_file.txt:
10
ЧИТАТЬ ДАЛЕЕ …
Команды Linux - lsusb отображения информации о USB шинах в системе и устройствах подсоединенных к ней.
Заметка

Команды Linux — lsusb отображения информации о USB шинах в системе и устройствах подсоединенных к ней.

lsusb это утилита для отображения информации о USB шинах в системе и устройствах подсоединенных к ней.

Чтобы воспользоваться всеми возможностями этой программы, вы должны иметь ядро Linux с поддержкой интерфейса /dev/bus/usb. Все последние версии ядра — поддерживают этот интерфейс.

Команда lsusb позволяет задействовать одноименную утилиту, предназначенную для вывода информации о USB-шинах и подключенных к ним устройствах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств и поиска драйверов в случае их отсутствия в ядре ОС, а также несколько дополнительных идентификаторов, устанавливаемых производителем. В составе дистрибутивов Linux имеется файл базы данных устройств, содержащий названия устройств с известными идентификаторами. Данная команда крайне полезна для идентификации и диагностики устройств компьютера. Она выводит результаты в формате списка, который может фильтроваться с помощью утилиты grep.

Базовый синтаксис команды выглядит следующим образом:

$ lsusb [параметры]
ЧИТАТЬ ДАЛЕЕ …
Модуль 23. Задача 2. Координаты

Модуль 23. Задача 2. Координаты

Есть файл coordinates.txt, в котором хранится N пар из чисел X и Y. Оба числа передаются в первую функцию, где к каждой координате прибавляется случайное число (от 0 до 5 и от 0 до 10) и возвращается результат деления X на Y. Затем эти же координаты передаются во вторую функцию, где уже отнимается случайное число и возвращается Y / X.

После этого формируется случайное число от 0 до 100, затем в файл result.txt в каждую строку записывается отсортированный список, состоящий из этого случайного числа и двух полученных результатов.

Один программист уже написал за нас программу для этой задачи, но «почему-то» его вариант решения отклонили. Вот его код:

import random

def f(x, y):
    x += random.randint(0, 10)
    y += random.randint(0, 5)
    return x / y

def f2(x, y):
    x -= random.randint(0, 10)
    y -= random.randint(0, 5)
    return y / x

try:
    file = open('coordinates.txt', 'r')
    for line in file:
        nums_list = line.split()
        res1 = f(int(nums_list[0]), int(nums_list[1]))
        try:
            res2 = f2(int(nums_list[0]), int(nums_list[1]))
            try:
                number = random.randint(0, 100)
                file_2 = open('result.txt', 'w')
                my_list = sorted([res1, res2, number])
                file_2.write(' '.join(my_list))
            except Exception:
                print("Что-то пошло не так : ")
        except Exception:
            print("Что-то пошло не так со второй функцией")
        finally:
            file.close()
            file_2.close()
except Exception:
    print("Что-то пошло не так с первой функцией")

Отредактируйте и исправьте программу, убрав лишние вложенности try..except.

ЧИТАТЬ ДАЛЕЕ …
Модуль 23. Задача 1. Имена 2

Модуль 23. Задача 1. Имена 2

Есть файл people.txt, в котором построчно хранится N имён пользователей.

Напишите программу, которая берёт количество символов в каждой строке файла и в качестве ответа выводит общую сумму. Если в какой-либо строке меньше трёх символов (не считая литерала \n), то вызывается ошибка и сообщение, в какой именно строке возникла ошибка. Программа при этом не завершается и обрабатывает все имена файла.

Также при желании можно вывести все ошибки в отдельный файл errors.log.

Пример работы программы

Содержимое файла people.txt:
Василий
Николай
Надежда
Никита
Ян
Ольга
Евгения
Кристина

Ответ в консоли:
Ошибка: менее трёх символов в строке 4.
Общее количество символов: 48.
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 9. Война и мир

Модуль 22. Задача 9. Война и мир

Мало кто не знает про знаменитый роман Л.Н.Толстого “Война и мир”. Это довольно объемное произведение лежит в архиве voina-i-mir.zip. Напишите программу, которая подсчитает статистику по буквам (не только русского алфавита) в этом романе и выведет результат на экран (или в файл). Результат должен быть отсортирован по частоте встречаемости букв (по возрастанию или убыванию). Регистр символов имеет значение.

Постарайтесь написать программу так, чтобы для её работы не требовалась распаковка архива “в ручную”.

ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 8. Частотный анализ

Модуль 22. Задача 8. Частотный анализ

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

В файл analysis.txt выводится доля каждой буквы, встречающейся в тексте, с тремя знаками в дробной части. Буквы должны быть отсортированы по убыванию их доли. Буквы с равной долей должны следовать в алфавитном порядке.

Пример:

Содержимое файла text.txt:
Mama myla ramu.

Содержимое файла analysis.txt:
a 0.333
m 0.333
l 0.083
r 0.083
u 0.083
y 0.083
ЧИТАТЬ ДАЛЕЕ …
server.properties - что в нём и как.
Модуль 22. Задача 7. Турнир

Модуль 22. Задача 7. Турнир

В файле first_tour.txt записано число K и данные об участниках турнира по настольной игре “Орлеан”: фамилии, имена и количество баллов, набранных в первом туре. Во второй тур проходят участники, которые набрали более K баллов в первом туре.

Напишите программу, которая выводит в файл second_tour.txt данные всех участников, прошедших во второй тур, с нумерацией.

В первой строке нужно вывести в файл second_tour.txt количество участников второго тура. Затем программа должна вывести фамилии, инициалы и количество баллов всех участников, прошедших во второй тур, с нумерацией. Имя нужно сократить до одной буквы. Список должен быть отсортирован по убыванию набранных баллов.

Пример:

Содержимое файла first_tour.txt:
80
Ivanov Serg 80
Segeev Petr 92
Petrov Vasiliy 98
Vasiliev Maxim 78

Содержимое файла second_tour.txt:
2
1) V. Petrov 98
2) P. Sergeev 92
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 6. Паранойя

Модуль 22. Задача 6. Паранойя

Артуру постоянно кажется, что за ним следят и все хотят своровать “крайне важную информацию” с его компьютера, включая переписку с людьми. Поэтому он эти переписки шифрует. И делает он это с помощью шифра Цезаря (чем веселит агента службы безопасности)

Напишите программу, которая шифрует содержимое текстового файла text.txt шифром Цезаря, при этом символы первой строки файла должны циклически сдвигаться на 1, второй строки — на 2, третьей строки — на три и т.д. Результат вывести в файл cipher_text.txt

Пример:

Содержимое файла text.txt:
Hello
Hello
Hello
Hello

Содержимое файла cipher_text.txt:
Ifmmp
Jgnnq
Khoor
Lipps
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 5. Сохранение

Модуль 22. Задача 5. Сохранение

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

Пользователь вводит строку text. Реализуйте функцию, которая запрашивает у пользователя куда он хочет сохранить эту строку — вводится последовательность папок и имя файла (расширение .txt). Затем в этот файл сохраняется значение переменной text. Если этот файл уже существует, то спросить у пользователя действительно ли он хочет перезаписать его.
Обеспечьте контроль ввода: указанный из папок путь должен существовать на диске

Пример 1:

Введите строку: testiruyem

Куда хотите сохранить документ? Введите последовательность папок (через пробел):
Users Roman PycharmProjects Skillbox Module22

Введите имя файла: my_document
Файл успешно сохранён!

Содержимое файла:
testiruyem

Пример 2:

Введите строку: programm test

Куда хотите сохранить документ? Введите последовательность папок (через пробел):
Users Roman PycharmProjects Skillbox Module22

Введите имя файла: my_document
Вы действительно хотите перезаписать файл? да
Файл успешно перезаписан!

Содержимое файла:
programm test

ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 4. Файлы и папки

Модуль 22. Задача 4. Файлы и папки

Напишите программу, которая получает на вход путь до каталога (это может быть и просто корень диска) и выводит общее количество файлов и подкаталогов в нём. Также выведите на экран размер каталога в килобайтах (1 Килобайт = 1024 байта)

Важный момент: чтобы посчитать сколько весит каталог, нужно найти сумму размеров всех вложенных в него файлов.

Результат работы программы на примере python_basic\Module14:

Пожалуйста, введите путь до директории: E:\PycharmProjects\python_basic\Module14
Размер каталога (в Кб): 8.373046875
Количество подкаталогов: 7
Количество файлов: 15
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 3. Дзен Пайтона 2

Модуль 22. Задача 3. Дзен Пайтона 2

Напишите программу, которая определяет сколько букв (латинского алфавита), слов и строк в файле zen.txt (который содержит всё тот же Дзен Пайтона). Выведите три найденных числа на экран.

Дополнительно: выведите на экран букву, которая встречается в тексте наименьшее количество раз

Формат вывода:

Количество букв в файле: 
Количество слов в файле: 
Количество строк в файле: 
Наиболее редкая буква: 
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 2. Дзен Пайтона

Модуль 22. Задача 2. Дзен Пайтона

У вас есть файл zen.txt, в котором хранится так называемый “Дзен Пайтона” — текст философии программирования на языке Python.

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

Кстати, попробуйте открыть консоль Питона и ввести команду “import this”.

Результат работы программы:

Namespaces are one honking great idea -- let's do more of those!
If the implementation is easy to explain, it may be a good idea.
If the implementation is hard to explain, it's a bad idea.
Although never is often better than *right* now.
.....
ЧИТАТЬ ДАЛЕЕ …
Модуль 22. Задача 1. Сумма чисел 2

Модуль 22. Задача 1. Сумма чисел 2

Во входном файле numbers.txt записано N целых чисел, которые могут быть разделены пробелами и концами строк. Напишите программу, которая выводит сумму чисел в выходной файл answer.txt

Пример:

Содержимое файла numbers.txt
     2

2
  2
         2

Содержимое файла answer.txt
8
ЧИТАТЬ ДАЛЕЕ …
Модуль 21. Задача 9. Ханойские башни

Модуль 21. Задача 9. Ханойские башни

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

Головоломка “Ханойские башни” состоит из трех стержней, пронумерованных числами 1, 2, 3. На стержень 1 надета пирамидка из N дисков различного диаметра в порядке возрастания диаметра. Диски можно перекладывать с одного стержня на другой по одному, при этом диск нельзя класть на диск меньшего диаметра. Необходимо переложить всю пирамидку со стержня 1 на стержень 3 за минимальное число перекладываний.

Модуль 21. Задача 9. Ханойские башни

Напишите программу, которая решает головоломку; для данного числа дисков N печатает последовательность перекладываний в формате A B C, где A — номер перекладываемого диска, B — номер стержня с которого снимается данный диск, C — номер стержня на который надевается данный диск.

Например, строка 1 2 3 означает перемещение диска номер 1 со стержня 2 на стержень 3. В одной строке печатается одна команда. Диски пронумерованы числами от 1 до n в порядке возрастания диаметров.

Программа должна вывести минимальный (по количеству произведенных операций) способ перекладывания пирамидки из данного числа дисков.
Решение оформите в виде функции move (n, x, y), которая печатает последовательность перекладываний дисков для перемещения пирамидки высоты N со стержня номер X на стержень номер Y.

Пример:

Введите количество дисков: 2
Переложить диск 1 со стержня номер 1 на стержень номер 2
Переложить диск 2 со стержня номер 1 на стержень номер 3
Переложить диск 1 со стержня номер 2 на стержень номер 3
ЧИТАТЬ ДАЛЕЕ …