Категорически приветствую, в данной теме мы решим задачки из курса Яндекс Практикума и поясним за код в главе 2.2 Условный оператор.
A - Просто здравствуй, просто как дела
Решение:
print("Как Вас зовут?")
name = input()
print(f"Здравствуйте, {name}!")
print("Как дела?")
kak_dela = input()
if kak_dela == "хорошо":
print("Я за вас рада!")
elif kak_dela == "плохо":
print("Всё наладится!")
Затем код выводит сообщение "Как дела?" и также ожидает ввода пользователя. Значение введенного пользователем сохраняется в переменной kak_dela. Затем используется условный оператор if для проверки значения переменной kak_dela.
Если пользователь ввел "хорошо", то на экран выводится сообщение "Я за вас рада!". Если пользователь ввел "плохо", то на экран выводится сообщение "Всё наладится!". Если же пользователь ввел что-то другое, то программа ничего не выводит.
B - Кто быстрее?
Решение:
x = int(input())
y = int(input())
champ = max(x, y)
if champ == x:
print("Петя")
elif champ == y:
print("Вася")
Затем с помощью конструкции 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. Петя")
Затем мы вычисляем время, за которое каждый из участников пройдёт дистанцию 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("Петя")
Затем, используя формулу время = расстояние / скорость + время начала, рассчитываются время, за которое каждый из спортсменов пройдет заданное расстояние. Для этого, к скорости 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 без остатка (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")
Далее мы создаем переменную zaika и присваиваем ей строку "зайка".
Затем мы с помощью оператора in проверяем, есть ли подстрока zaika в строке opis. Если это так, то мы выводим "YES", иначе - "NO".
Таким образом, код позволяет проверить, содержится ли в строке определенное слово(зайка).
I - Первому игроку приготовиться
Решение:
name1 = input()
name2 = input()
name3 = input()
print(min(name1, name2, name3))
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))
Далее в коде вычисляются две суммы, 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[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")
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])
N - Властелин Чисел: Две Башни
Решение:
n = sorted(input())
i = n.count('0')
print(n[i] + n[0 if i else i + 1], n[-1] + n[-2])
- В первой строке мы вводим трехзначное число и сортируем его цифры в порядке возрастания с помощью функции sorted(). Результат сохраняем в переменной n.
- Затем мы находим количество нулей в числе, используя метод count(). Результат сохраняем в переменной i.
- Далее мы выводим первое защитное число, складывая первую цифру числа, которая не равна нулю и не находится в начале числа (то есть 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]}')
Далее код использует 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')]))
Затем, с помощью генератора списка, запрашивается скорость каждого участника и создается новый список, состоящий из кортежей (имя, скорость). Этот список сортируется по убыванию скорости с помощью метода 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 равен нулю. В этом случае уравнение превращается в линейное: $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%")
Затем в условии проверяется теорема Пифагора, согласно которой сумма квадратов катетов равна квадрату гипотенузы. Если условие истинно, то выводится "крайне мала", иначе, если условие ложно, то выводится "велика". Если значение равно, то выводится "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))
Затем создается список из 3-х пустых строк [''] * 3, который передается функции map() в качестве первого аргумента и в качестве второго аргумента передается лямбда-функция, которая принимает ввод пользователя и возвращает его. Таким образом, map(input, [''] * 3) создает объект-генератор, который запрашивает у пользователя ввод три раза.
Полученные от пользователя строки проверяются на наличие слова "зайка". Если строка содержит это слово, она сохраняется в список, который затем сортируется.
Первый элемент отсортированного списка из пункта 3 выбирается в качестве предложения, содержащего слово "зайка", и сохраняется в переменную sentence.
Наконец, выводится значение переменной sentence и ее длина с помощью функции print().
Спасибо за прочтение данной темы, надеюсь, некоторым она поможет разобраться в принципе работы некоторых методов и функций.
Последнее редактирование: