Гайд - Python | Яндекс Практикум глава 2.2 | Решение + пояснение за код | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Гайд Python | Яндекс Практикум глава 2.2 | Решение + пояснение за код

lolzteam

Сеньор
Автор темы
😈MORGENSHTERN😈
8 Янв 2023
147
72
0
1681650251339
Категорически приветствую, в данной теме мы решим задачки из курса Яндекс Практикума и поясним за код в главе 2.2 Условный оператор.

A - Просто здравствуй, просто как дела​

Решение:
print("Как Вас зовут?")
name = input()
print(f"Здравствуйте, {name}!")
print("Как дела?")
kak_dela = input()

if kak_dela == "хорошо":
    print("Я за вас рада!")
elif kak_dela == "плохо":
    print("Всё наладится!")
Сначала код выводит на экран сообщение "Как Вас зовут?", затем ждет ввода пользователя и сохраняет его в переменной name с помощью функции input(). Затем код выводит приветственное сообщение, используя значение переменной name, с помощью f-строки (форматирование строк).
Затем код выводит сообщение "Как дела?" и также ожидает ввода пользователя. Значение введенного пользователем сохраняется в переменной kak_dela. Затем используется условный оператор if для проверки значения переменной kak_dela.
Если пользователь ввел "хорошо", то на экран выводится сообщение "Я за вас рада!". Если пользователь ввел "плохо", то на экран выводится сообщение "Всё наладится!". Если же пользователь ввел что-то другое, то программа ничего не выводит.

B - Кто быстрее?​

Решение:
x = int(input())
y = int(input())
champ = max(x, y)

if champ == x:
    print("Петя")
elif champ == y:
    print("Вася")
Данный код сначала считывает два целых числа x и y с помощью функции input() и преобразует их в тип int. Затем находится максимальное из двух чисел, используя функцию max(), которая возвращает большее из переданных ей значений.

Затем с помощью конструкции if-elif определяется, какой из чисел является максимальным, и выводится соответствующее сообщение в консоль с помощью функции print(). Если champ == x, то это означает, что x является большим числом, и выводится сообщение "Петя". Если champ == y, то выводится сообщение "Вася", так как y является большим числом.

Таким образом, данный код позволяет определить, какое из двух чисел x или y является большим, и вывести соответствующее сообщение в консоль.

C - Кто быстрее на этот раз?​

Решение:
x = int(input())
y = int(input())
z = int(input())
maxx = max(x, y, z)

if maxx == x:
    print("Петя")
elif maxx == y:
    print("Вася")
elif maxx == z:
    print("Толя")
Этот код находит максимальное число среди трех введенных пользователем значений и выводит имя соответствующего игрока.
Сначала программа считывает три числа x, y и z из стандартного ввода с помощью функции input(), приводит их к типу int и сохраняет в соответствующих переменных.
Затем программа находит максимальное число с помощью функции max(), которой передаются три аргумента - переменные x, y и z.
Далее, с помощью условных операторов if, elif программа сравнивает максимальное число с каждым из трех чисел и выводит имя игрока, чье число совпадает с максимальным числом. Если максимальное число совпадает с числом Пети, то программа выводит "Петя", если с числом Васи - "Вася", а если с числом Толи - "Толя".

D - Список победителей​

Решение:
petya_speed = int(input())
vasya_speed = int(input())
tolya_speed = int(input())
race_distance = 43872

petya_time = race_distance / petya_speed
vasya_time = race_distance / vasya_speed
tolya_time = race_distance / tolya_speed

if petya_time < vasya_time and petya_time < tolya_time:
    print("1. Петя")
    if vasya_time < tolya_time:
        print("2. Вася")
        print("3. Толя")
    else:
        print("2. Толя")
        print("3. Вася")
elif vasya_time < petya_time and vasya_time < tolya_time:
    print("1. Вася")
    if petya_time < tolya_time:
        print("2. Петя")
        print("3. Толя")
    else:
        print("2. Толя")
        print("3. Петя")
else:
    print("1. Толя")
    if petya_time < vasya_time:
        print("2. Петя")
        print("3. Вася")
    else:
        print("2. Вася")
        print("3. Петя")
Первым шагом мы считываем среднюю скорость Пети с помощью функции input(). Эта функция позволяет ввести данные с клавиатуры и сохранить их в переменной petr_speed. То же самое мы делаем для скоростей Васи и Толи.
Затем мы вычисляем время, за которое каждый из участников пройдёт дистанцию 43872 метра. Для этого мы используем формулу:
time = distance / speed
где distance – расстояние, которое нужно пройти, speed – скорость движения, а time – время, за которое нужно пройти расстояние.
Для каждого участника мы вычисляем время с помощью этой формулы и сохраняем результат в отдельной переменной (petr_time, vasya_time, tolya_time).
Далее мы создаём список times, в котором хранятся времена, за которые прошли дистанцию каждый из участников. Мы добавляем в этот список переменные petr_time, vasya_time и tolya_time с помощью метода append().
Для того чтобы вывести имена участников в порядке их занятых мест, мы сортируем список times по возрастанию и сохраняем отсортированный список в переменную sorted_times. Затем мы перебираем элементы списка sorted_times и выводим имя участника, который прошёл дистанцию за это время, используя условный оператор if.
Например, если первый элемент списка sorted_times равен petr_time, то мы выводим на экран строку "1. Петя". Если второй элемент списка sorted_times равен vasya_time, то мы выводим на экран строку "2. Вася", и так далее.
Таким образом, мы получаем имена участников в порядке их занятых мест, и выводим их на экран.

E - Яблоки​

Решение:
n = int(input())
m = int(input())
vasya = int(12 + m)
petya = int(6 + n)

maxxx = max(vasya, petya)

if maxxx == vasya:
    print("Вася")
elif maxxx == petya:
    print("Петя")
В первых двух строках кода происходит считывание значения расстояния n и скорости m одного из спортсменов.
Затем, используя формулу время = расстояние / скорость + время начала, рассчитываются время, за которое каждый из спортсменов пройдет заданное расстояние. Для этого, к скорости m Васи добавляется начальное время 12, а к скорости n Пети - 6.
Далее, находится максимальное значение времени, которое потребуется одному из спортсменов, чтобы пройти расстояние. Если это значение равно времени Васи vasya, то на экран выводится строка "Вася", а если значение равно времени Пети petya, то выводится строка "Петя".
Таким образом, в итоге на экран будет выведено имя спортсмена, который пройдет заданное расстояние за меньшее время.

F - Сила прокрастинации​

Решение:
year = int(input())

if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print('YES')
else:
    print('NO')
Согласно григорианскому календарю, год является високосным, если он делится на 4 без остатка. Однако, если год делится на 100 без остатка, то он не является високосным, за исключением тех годов, которые делятся на 400 без остатка.
В коде с помощью оператора % проверяется, делится ли год на 4 без остатка (year % 4 == 0). Далее, с помощью оператора and и оператора != проверяется, не делится ли год на 100 без остатка (year % 100 != 0). Если это условие истинно, значит год является високосным.
Если же год не делится на 100 без остатка, то проверяется, делится ли год на 400 без остатка (year % 400 == 0). Если это условие истинно, то год также является високосным.
Если ни одно из условий не истинно, значит год не является високосным.
После проверки условий выводится соответствующее сообщение в консоль с помощью оператора print. Если год является високосным, то выводится сообщение "YES", в противном случае - "NO".

G - А роза упала на лапу Азора​

Решение:
numb = input()
if numb == numb[::-1]:
    print("YES")
else:
    print("NO")
Данный код проверяет, является ли введенное пользователем число палиндромом.
Сначала происходит ввод числа с помощью функции input() и сохранение его в переменную numb.
Далее происходит проверка числа на палиндромность. Для этого используется условный оператор if.
numb[::-1] - это срез, который возвращает число numb, записанное в обратном порядке. Если число numb является палиндромом, то оно будет равно себе, записанному в обратном порядке.
Если число является палиндромом, то программа выводит на экран строку "YES", а если число не является палиндромом, то программа выводит на экран строку "NO".

H - Зайка — 1​

Решение:
opis = input()
zaika = "зайка"
if zaika in opis:
    print('YES')
else:
    print("NO")
На первой строке кода мы принимаем строку ввода opis.
Далее мы создаем переменную zaika и присваиваем ей строку "зайка".
Затем мы с помощью оператора in проверяем, есть ли подстрока zaika в строке opis. Если это так, то мы выводим "YES", иначе - "NO".
Таким образом, код позволяет проверить, содержится ли в строке определенное слово(зайка).

I - Первому игроку приготовиться​

Решение:
name1 = input()
name2 = input()
name3 = input()

print(min(name1, name2, name3))
Данный код считывает три строки с именами name1, name2 и name3, а затем выводит наименьшее из них, используя функцию min(). Функция min() возвращает минимальное значение из переданных ей аргументов. В данном случае, так как мы передали три строки, то функция сравнивает их лексикографически (то есть в алфавитном порядке) и возвращает наименьшую из них. Например, если name1 равно "Ivan", name2 равно "Alex" и name3 равно "Olga", то на экран будет выведено "Alex".

J - Лучшая защита — шифрование​

Решение:
a = input()
b = list(a)

k = int(b[0]) + int(b[1])
c = int(b[2]) + int(b[1])

if k > c:
    print(str(k) + str(c))
else:
    print(str(c) + str(k))
Данный код принимает на вход строку a и переводит ее в список b из отдельных символов. Затем из списка извлекаются символы с индексами 0, 1 и 2, которые затем приводятся к типу int.
Далее в коде вычисляются две суммы, k и c. Сумма k равна сумме первого и второго символа из списка, а сумма c - сумме второго и третьего символов из списка.
Затем сравниваются значения k и c, и, если k больше, то выводится строка, состоящая из k и c, а иначе - из c и k.
В итоге, код выводит строку, состоящую из двух цифр - сначала большей суммы, затем меньшей.

K - Красота спасёт мир​

Решение:
a = input()
c = list(a)
i = int(min(a)) + int(max(a))
c.remove(min(a)), c.remove(max(a))

if i == int(c[0]) * 2:
    print("YES")
else:
    print("NO")
Сначала мы создаем список c из трех цифр, введенных пользователем в переменную a. Затем мы находим сумму двух наименьших цифр с помощью функций min и max, затем удаляем эти цифры из списка c.
Затем мы проверяем, равняется ли двойное значение оставшейся цифры c[0] сумме двух первоначально выбранных цифр i. Если это условие выполнено, выводим "YES", в противном случае выводим "NO".

L - Музыкальный инструмент​

Решение:
a = int(input())
b = int(input())
c = int(input())

if c < b + a and b < c + a and a < b + c:
    print("YES")
else:
    print("NO")
В случае, если это возможно, то выполнится условие в первой строке if-оператора: сумма любых двух сторон должна быть больше третьей стороны, что и проверяется с помощью трех отдельных условий. Если данное условие истинно, то выводится строка "YES". В противном случае, когда треугольник не может существовать, выводится строка "NO".

M - Властелин Чисел: Братство общей цифры​

Решение:
a = input()
b = input()
c = input()

if a[0] == b[0] == c[0]:
    print(a[0])
elif a[1] == b[1] == c[1]:
    print(a[1])
Данный код проверяет, находятся ли первые символы трех строк a, b и c в одной строке. Если да, то на экран выводится этот символ. В противном случае код проверяет, находятся ли вторые символы трех строк в одной строке, и если да, то выводит этот символ. Если ни первые, ни вторые символы не находятся в одной строке, то ничего не выводится.

N - Властелин Чисел: Две Башни​

Решение:
n = sorted(input())
i = n.count('0')
print(n[i] + n[0 if i else i + 1], n[-1] + n[-2])
  1. В первой строке мы вводим трехзначное число и сортируем его цифры в порядке возрастания с помощью функции sorted(). Результат сохраняем в переменной n.
  2. Затем мы находим количество нулей в числе, используя метод count(). Результат сохраняем в переменной i.
  3. Далее мы выводим первое защитное число, складывая первую цифру числа, которая не равна нулю и не находится в начале числа (то есть n), с первой цифрой числа, которая может быть нулем, то есть либо n[0], если число содержит ноль, либо n[i + 1] в противном случае.
    [*]Затем мы выводим второе защитное число, складывая две последние цифры числа, которые находятся в конце списка n (то есть n[-1] и n[-2]).

Обратите внимание, что используемая здесь конструкция 0 if i else i + 1 эквивалентна следующему условию: если i не равно 0, то вернуть i + 1, иначе - вернуть 0. Это позволяет найти индекс первой цифры числа, которая может быть нулем, если она есть в числе.

O - Властелин Чисел: Возвращение Цезаря

Решение:
n = sorted(input() + input())
print(f'{n[-1]}{sum([int(n[i]) for i in range(1, len(n) - 1)]) % 10}{n[0]}')
Изначально он считывает два числа с помощью функции input(), затем объединяет их в одну строку с помощью операции сложения: input() + input(). Затем он преобразует эту строку в список символов, используя функцию list(), и сортирует его с помощью функции sorted(). Поскольку числа, считанные из входных данных, состоят из двух цифр каждое, то после объединения и сортировки список будет состоять из четырех символов - двух цифр первого числа и двух цифр второго числа, расположенных в порядке возрастания.

Далее код использует f-строку для форматированного вывода результата. В первой части f-строки вычисляется максимальная цифра в списке, которая располагается последней, т.е. n[-1]. Во второй части f-строки вычисляется сумма цифр, находящихся между максимальной и минимальной цифрами, с помощью спискового включения. Функция sum() суммирует все элементы списка. Затем эта сумма берется по модулю 10 (с помощью операции % 10), чтобы получить одну цифру, и вставляется второй в результат. В третьей части f-строки выводится минимальная цифра списка, которая располагается первой, т.е. n[0].

P - Легенды велогонок возвращаются: кто быстрее?

Решение:
width = 8
names = ["Петя", "Вася", "Толя"]
win = [name for name, speed in sorted([(name, float(input())) for name in names], key=lambda x: x[1], reverse=True)]


def out(text, offset=0):
    return f"{' ' * width * offset}{text.center(width)}"


print('\n'.join([out(win[0], 1), out(win[1], 0), out(win[2], 2), out('II') + out('I') + out('III')]))
Сначала определяется ширина колонки таблицы - 8 символов, и список имен участников.

Затем, с помощью генератора списка, запрашивается скорость каждого участника и создается новый список, состоящий из кортежей (имя, скорость). Этот список сортируется по убыванию скорости с помощью метода sort и функции-ключа lambda. Наконец, из этого списка выбираются только имена участников и сохраняются в переменную win.

Функция out предназначена для форматирования строк таблицы. Она принимает два параметра: текст (то, что нужно вывести в ячейке таблицы) и offset (сдвиг ячейки по горизонтали). С помощью метода center текст выравнивается по центру и дополняется пробелами до ширины колонки. Затем с помощью умножения строки на число создается отступ с нужным количеством пробелов.

В последней строке кода создается таблица из четырех строк с помощью функции '\n'.join, в которой с помощью функции out и сдвигов выводятся имена участников и места.

Q - Корень зла

Решение:
a = float(input())
b = float(input())
c = float(input())

if a == 0:
    if b == 0 and c == 0:
        print('Infinite solutions')
    if b != 0 and (c != 0 or c == 0):
        x1 = -(c / b)
        print(x1)
    if b == 0 and c != 0:
        print("No solution")
else:
    D = ((b) ** 2) - (4 * a * c)
    if D > 0:
        x2 = ((-b) - (D ** 0.5)) / (2 * a)
        x3 = ((-b) + (D ** 0.5)) / (2 * a)
        if x2 < x3:
            x3, x2 = x2, x3
        print(x3, x2)
    elif D == 0:
        x4 = (-b) / (2 * a)
        print(x4)
    elif D < 0:
        print("No solution")
Первоначально считываются три вещественных числа a, b и c с помощью функции input().
Затем проверяется случай, когда коэффициент a равен нулю. В этом случае уравнение превращается в линейное: $bx + c = 0$. Если и b, и c равны нулю, то уравнение имеет бесконечно много решений, и выводится строка "Infinite solutions". Если b не равен нулю, то решением является x = -c/b. Если же b равен нулю, а c не равен нулю, то уравнение не имеет решений и выводится строка "No solution".
В случае, когда a не равно нулю, вычисляется дискриминант $D = b^2 - 4ac$. Если D больше нуля, то уравнение имеет два корня: $x_1 = \frac{-b - \sqrt{D}}{2a}$ и $x_2 = \frac{-b + \sqrt{D}}{2a}$. В этом случае выводятся значения корней в порядке возрастания, т.е. больший корень x2 выводится первым, а меньший корень x1 — вторым. Если D равно нулю, то уравнение имеет один корень $x = -\frac{b}{2a}$. В этом случае выводится значение корня x. Если же D меньше нуля, то уравнение не имеет решений и выводится строка "No solution".
В коде используются условные конструкции if и elif, операторы сравнения ==, !=, <, а также математические операции +, -, *, / и возведение в степень **. Результаты выводятся с помощью функции print().

R - Территория зла

Решение:
x = input()
y = input()
z = input()

listxyz = list(x + y + z)
listxyz.sort()

if listxyz[2] ** 2 < (listxyz[0] ** 2) + (listxyz[1] ** 2):
    print("крайне мала")
elif listxyz[2] ** 2 > (listxyz[0] ** 2) + (listxyz[1] ** 2):
    print("велика")
else:
    print("100%")
Данный код на вход принимает три целых числа x, y, z, которые представляют длины сторон треугольника. Сначала создается список listxyz, в который добавляются цифры из x, y, z в виде отдельных элементов списка, после чего список сортируется в порядке возрастания.
Затем в условии проверяется теорема Пифагора, согласно которой сумма квадратов катетов равна квадрату гипотенузы. Если условие истинно, то выводится "крайне мала", иначе, если условие ложно, то выводится "велика". Если значение равно, то выводится "100%". Это связано с тем, что квадрат гипотенузы равен сумме квадратов катетов только для прямоугольного треугольника. Если треугольник не прямоугольный, то его гипотенуза не может быть меньше суммы катетов, и наоборот, если треугольник прямоугольный, то теорема Пифагора выполняется и выводится "100%".

S - Автоматизация безопасности

Решение:
x = float(input())
y = float(input())
r1 = 5
r2 = 10
c1 = (x ** 2 + y ** 2) ** 0.5  # гипотинуза треугольника с катетами == сторонам от точки 0 до точки - проекции на ось
c2 = (x ** 2 + y ** 2) ** 0.5  # основной, большой кругq
y_para = (0.25 * (x ** 2)) + (0.5 * x) + 8.75
""""проверям к какой четверти относится точка по вводимым пользователем координатам[/I][/I][/I][/I][/I][/I]
 [I][I][I][I][I][I]и после уже рассматриваем в какие области попадает сама точка"""[/I][/I][/I][/I][/I][/I]
 
[I][I][I][I][I][I]if x >= 0 and y >= 0:  # точка в первой четверти системы координат
    if c1 <= r1:  # проверка на нахождение точки внутри красной четверти круга
        print("Опасность! Покиньте зону как можно скорее!")
    elif c2 > r2:  # проверка на нахождение точки вне четверти большого (зелёного) круга
        print("Вы вышли в море и рискуете быть съеденным акулой!")
    else:  # случай , когда точка лежит только в зелёном поле
        print("Зона безопасна. Продолжайте работу.")
elif x <= 0 and y >= 0:  # точка во второй четверти системы координат
    if y <= 5 and y <= ((5 * x) + 35) / 3:
        print("Опасность! Покиньте зону как можно скорее!")
    elif c2 > r2:  # проверка на нахождение точки вне четверти большого (зелёного) круга
        print("Вы вышли в море и рискуете быть съеденным акулой!")
    else:
        print("Зона безопасна. Продолжайте работу.")
elif (x >= 0 and y <= 0) or (x <= 0 and y <= 0):  # точка в третьей или четвертой четверти системы координат
    if y < y_para:  # проверка на нахождение точки в области выше параболы (внутри её ветвей)
        print("Опасность! Покиньте зону как можно скорее!")
    elif c2 > r2:  # проверка на нахождение точки вне четверти большого (зелёного) круга
        print("Вы вышли в море и рискуете быть съеденным акулой!")
    else:
        print("Зона безопасна. Продолжайте работу.")
elif x == 0 and y == 0:
    print("Опасность! Покиньте зону как можно скорее!")

Сначала пользователь вводит значения координат точки в переменные x и y с помощью функции input()
Задаются значения радиусов двух кругов r1 и r2
С помощью формулы находится расстояние от точки до начала координат (0,0) - это значение записывается в переменную c1
Также находится расстояние от точки до начала координат (0,0) - это значение записывается в переменную c2
Рассчитывается значение y_para, которое используется для проверки, попадает ли точка в определенную область (выше параболы)
С помощью условных операторов if-elif-else проверяется, в какой четверти находится точка и находится ли она в определенных областях. Если точка находится внутри опасной зоны, то выводится предупреждение об опасности. Если точка находится вне безопасной зоны, то выводится предупреждение о риске быть съеденным акулой. Если точка находится в безопасной зоне, то выводится сообщение о безопасности. Если точка находится в начале координат (0,0), то также выводится предупреждение об опасности.

T - Зайка — 2

Решение:
word = "зайка"
sentence = sorted(line for line in map(input, [''] * 3) if word in line)[0]
print(sentence, len(sentence))
Сначала определяется строковая переменная word со значением "зайка".
Затем создается список из 3-х пустых строк [''] * 3, который передается функции map() в качестве первого аргумента и в качестве второго аргумента передается лямбда-функция, которая принимает ввод пользователя и возвращает его. Таким образом, map(input, [''] * 3) создает объект-генератор, который запрашивает у пользователя ввод три раза.
Полученные от пользователя строки проверяются на наличие слова "зайка". Если строка содержит это слово, она сохраняется в список, который затем сортируется.
Первый элемент отсортированного списка из пункта 3 выбирается в качестве предложения, содержащего слово "зайка", и сохраняется в переменную sentence.
Наконец, выводится значение переменной sentence и ее длина с помощью функции print().

Спасибо за прочтение данной темы, надеюсь, некоторым она поможет разобраться в принципе работы некоторых методов и функций.
 
Последнее редактирование:
Like
  • 1
Реакции: 1 user
Активность:
Пока что здесь никого нет