Задачи Python

Основы

Введение

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

I like Python

Напишите программу, которая выводит на экран текст «I***like***Python» (без кавычек).

print ("I", "like", "Python", sep="***")

# Вывод:

I***like***Python

Управляемый разделитель

Напишите программу, которая считывает строку-разделитель и три строки, а затем выводит указанные строки через разделитель.

a=input()

b=input()

c=input()

d=input()

print (b, c, d, sep=a)

# Вывод:

***

1

2

3

1***2***3

Сумма трёх чисел

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

a = int(input())
a += int(input())
a += int(input())
print(a)
# Вывод:

1

2

3

6

Следующее и предыдущее

Напишите программу, которая считывает целое число, после чего на экран выводится следующее и предыдущее целое число с пояснительным текстом.

a = int(input())
print('Следующее за числом', a, 'число:', a+1)
print('Для числа', a, 'предыдущее число:', a-1)
# Вывод:

10

Следующее за числом 10 число: 11

Для числа 10 предыдущее число: 9

Разделяй и властвуй

Напишите программу, которая считывает целое положительное число xx и выводит на экран последовательность чисел x, 2x, 3x, 4x, 5x, разделённых тремя черточками.

a = int(input())
print(a, a*2, a*3, a*4, a*5, sep='-'*3)
# Вывод:

10

10---20---30---40---50

Расстояние в метрах

Напишите программу, которая находит полное число метров по заданному числу сантиметров.

a = int(input())
print(a//100)
# Вывод:

1050

10

Сама неотвратимость

Безумный титан Танос собрал все 6 камней бесконечности и намеревается уничтожить половину населения Вселенной по щелчку пальцев. При этом если население Вселенной является нечетным числом, то титан проявит милосердие и округлит количество выживших в большую сторону. Помогите Мстителям подсчитать количество выживших.

a = int(input())
print(a // 2 + a % 2)
# Вывод:

1015

508

Пересчет временного интервала

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

a = int(input())
print(a, 'мин - это', a // 60, 'час', a % 60, 'минут.')
# Вывод:

90

90 мин - это 1 час 30 минут.

Трехзначное число

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

a = int(input())
a1 = a // 100
a2 = a % 100 // 10
a3 = a % 10
print('Сумма цифр =', a1 + a2 + a3)
print('Произведение цифр =', a1 * a2 * a3)
# Вывод:

132

Сумма цифр = 6

Произведение цифр = 6

Альтернативное решение:

a = str(input())
print('Сумма цифр =', int(a[0]) + int(a[1]) + int(a[2]))
print('Произведение цифр =', int(a[0]) * int(a[1]) * int(a[2]))
# Вывод:

132

Сумма цифр = 6

Произведение цифр = 6

Четырёхзначное число

Напишите программу для нахождения цифр четырёхзначного числа.

a = int(input())
print("Цифра в позиции тысяч равна", a // 1000)
print("Цифра в позиции сотен равна", a % 1000 // 100)
print("Цифра в позиции десятков равна", a % 100 // 10)
print("Цифра в позиции единиц равна", a % 10)
# Вывод:

1234

Цифра в позиции тысяч равна 1

Цифра в позиции сотен равна 2

Цифра в позиции десятков равна 3

Цифра в позиции единиц равна 4

Пароль

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

Напишите программу, которая сравнивает пароль и его подтверждение. Если они совпадают, то программа выводит: «Пароль принят», иначе: «Пароль не принят».

a = (input())
b = (input())
print('Пароль принят') if a == b else print('Пароль не принят')
# Вывод:

123456

123456

Пароль принят

Четное или нечетное?

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

a = int(input())
print('Нечетное') if a % 2 else print('Четное')
# Вывод:

50

Четное

Роскомнадзор

Напишите программу, которая определяет, разрешен пользователю доступ к интернет-ресурсу или нет.

Формат входных данных
На вход программе подаётся целое число — возраст пользователя.

Формат выходных данных
Программа должна вывести текст «Доступ разрешен» если возраст не менее 18, и «Доступ запрещен» в противном случае.

a = int(input())
print('Доступ разрешен') if a >= 18 else print('Доступ запрещен')
# Вывод:

19

Доступ разрешен

Арифметическая прогрессия

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

a1 = int(input())
a2 = int(input())
a3 = int(input())
if a3 - a2 == a2 - a1:
    print('YES')
else:
    print('NO')
# Вывод:
1
2
3
YES


Наименьшее из четырёх чисел

Напишите программу, которая определяет наименьшее из четырёх чисел.

a, b, c, d = int(input()), int(input()), int(input()), int(input())
if a > b:
    a = b
if c > d:
    c = d
if a > c:
    a = c
print(a)
# Вывод:
1
2
3
4
1


Альтернативное решение:

a1 = int(input())
a2 = int(input())
a3 = int(input())
a4 = int(input())
print(min(a1, a2, a3, a4))
# Вывод:

1

2

3

4

1

Только +

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

a = list()
a.append(int(input()))
a.append(int(input()))
a.append(int(input()))
s = 0
for i in a:

    if i >= 0:
        s += i
print(s)
# Вывод:
1
2
-3
3

Альтернативное решение:

a, b, c = int(input()), int(input()), int(input())
print((a if a > 0 else 0) + (b if b > 0 else 0) + (c if c > 0 else 0))
# Вывод:

-2

-3

5

5

Принадлежность 1

Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число промежутку от -1 до 17.

a1 = int(input())
if a1 > -1 and a1 < 17:
    print('Принадлежит')
else:
    print('Не принадлежит')
# Вывод:
10
Принадлежит

Принадлежность 2

Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от минус бесконечности до -3 и от 7 до бесконечности.

a1 = int(input())
print('Принадлежит') if (a1 <= -3 or a1 >= 7) else print('Не принадлежит')
# Вывод:

10

Принадлежит

Принадлежность 3

Напишите программу, которая принимает целое число x и определяет, принадлежит ли данное число указанным промежуткам: от -30 до -2 и от 7 до 25.

x = int(input())
print('Принадлежит') if (x > -30 and x <= -2) or (x > 7 and x <= 25) else print('Не принадлежит')
# Вывод:

10

Принадлежит

Високосный год

Напишите программу, которая определяет, является ли год с данным номером високосным. Если год является високосным, то выведите «YES», иначе выведите «NO». Год является високосным, если его номер кратен 4, но не кратен 100, или если он кратен 400.

a1 = int(input())
print('YES') if ((a1 % 4 == 0) and not (a1 % 100 == 0)) or (a1 % 400 == 0) else print('NO')
# Вывод:

2021

NO

Ход ладьи

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

a1 = int(input())
a2 = int(input())
a3 = int(input())
a4 = int(input())
print('YES') if (a1 == a3) or (a2 == a4) else print('NO')
# Вывод:

1

1

2

1

YES

Ход короля

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

a, b, c, d = (int(input()) for i in 'abcd')
if abs(a - c) <= 1 and abs(b - d) <= 1:
    print('YES')
else:
    print('NO')
# Вывод:
1
1
2
2
YES

Вид треугольника

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

a1 = int(input())
a2 = int(input())
a3 = int(input())
if a1 == a2 == a3:
    print('Равносторонний')
elif a2 == a3 or a1 == a3 or a1 == a2:
    print('Равнобедренный')
else:
    print('Разносторонний')
# Вывод:
1
3
2
Разносторонний

Самописный калькулятор

Напишите программу, которая считывает с клавиатуры два целых числа и строку. Если эта строка является обозначением одной из четырёх математических операций (+, -, *, /), то выведите результат применения этой операции к введённым ранее числам, в противном случае выведите «Неверная операция». Если пользователь захочет поделить на ноль, выведите текст «На ноль делить нельзя!».

a1 = int(input())
a2 = int(input())
a3 = input()

if a3 == '/' and a2 == 0:
    print('На ноль делить нельзя!')
elif a3 == '/':
    print(a1 / a2)
elif a3 == '+':
    print(a1 + a2)
elif a3 == '-':
    print(a1 - a2)
elif a3 == '*':
    print(a1 * a2)
else:
    print('Неверная операция')
# Вывод:
3
6
+
9

Цветовой микшер

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

  • если смешать красный и синий, то получится фиолетовый;
  • если смешать красный и желтый, то получится оранжевый;
  • если смешать синий и желтый, то получится зеленый.

Напишите программу, которая считывает названия двух основных цветов для смешивания. Если пользователь вводит что-нибудь помимо названий «красный», «синий» или «желтый», то программа должна вывести сообщение об ошибке. В противном случае программа должна вывести название вторичного цвета, который получится в результате.


a1 = input()
a2 = input()

if a1 == 'красный':
    if a2 == 'красный':
        print('красный')
    elif a2 == 'желтый':
        print('оранжевый')
    elif a2 == 'синий':
        print('фиолетовый')
elif a1 == 'желтый':
    if a2 == 'красный':
        print('оранжевый')
    elif a2 == 'желтый':
        print('желтый')
    elif a2 == 'синий':
        print('зеленый')
elif a1 == 'синий':
    if a2 == 'красный':
        print('фиолетовый')
    elif a2 == 'желтый':
        print('зеленый')
    elif a2 == 'синий':
        print('синий')
if a1 not in ('синий', 'красный', 'желтый') or a2 not in ('синий', 'красный', 'желтый'):
    print('ошибка цвета')
# Вывод:
красный
синий
фиолетовый

Альтернативный вариант:


a, b = input(), input()
if (a == 'красный' and b == 'синий') or (a == 'синий' and b == 'красный'):
    print('фиолетовый')
elif (a == 'красный' and b == 'желтый') or (a == 'желтый' and b == 'красный'):
    print('оранжевый')
elif (a == 'синий' and b == 'желтый') or (a == 'желтый' and b == 'синий'):
    print('зеленый')
else:
    print('ошибка цвета')
# Вывод:
зеленый
оранжевый
ошибка цвета

Пересечение отрезков

На числовой прямой даны два отрезка: [a1​; b1​] и [a2​; b2​]. Напишите программу, которая находит их пересечение.

Пересечением двух отрезков может быть:

  • отрезок;
  • точка;
  • пустое множество.

a1 = int(input())
b1 = int(input())
a2 = int(input())
b2 = int(input())

if a1 == b2:
    print(a1)
elif a2 == b1:
    print(b1)
elif a1 <= a2 and b1 >= b2:
    print(a2, b2)
elif a2 <= a1 and b2 >= b1:
    print(a1, b1)
elif a2 < b1 and b2 >= a1:
    if b2 > b1:
        print(a2, b1)
    else:
        print(a1, b2)
elif a1 < b2 and b1 >= a2:
    if b1 > b2:
        print(a1, b2)
    else:
        print(a2, b1)
else:
    print('пустое множество')
# Вывод:
1
2
1
3
1 2

Альтернативный вариант:

a1, b1, a2, b2 = int(input()), int(input()), int(input()), int(input())
if min(b1, b2) < max(a1, a2):
    print('пустое множество')
elif min(b1, b2) == max(a1, a2):
    print(min(b1, b2))
else:
    print(max(a1, a2), min(b1, b2))
# Вывод:
3
7
156
200
пустое множество

И, напоследок, как делать не надо ))

a1, b1, a2, b2 = int(input()), int(input()), int(input()), int(input())
if a1 < a2 and b1 < b2 and b1 > a2:
    print(a2, b1)
elif a1 < a2 and b1 < b2 and a2 != b1 and b1 > a2:
    print(a2, b1)
elif a1 < a2 and b1 == a2 and b1 < b2:
    print(b1)
elif a2 < a1 and b2 == a1 and b2 < b1: print(b2) elif a1 > a2 and a1 < b2 and b1 > a1 and b1 < b2:
    print(a1, b1)
elif a1 == a2 and b1 < b2:
    print(a1, b1)
elif a2 == a1 and b2 < b1:
    print(a2, b2)
elif a1 < a2 and b1 == b2:
    print(a2, b2)
elif a1 == a2 and b2 < b1:
    print(a1, b2)
elif a1 < a2 and b1 > b2 and a1 < b2:
    print(a2, b2)
elif a1 < a2 and b1 > b2 and a1 > b2:
    print(a1, b1)
elif a2 < a1 and b1 < b2 and b1 > a1:
    print(a1, b1)
elif a2 < a1 and b1 < b2 and b1 < a2:
    print(a2, b2)
elif a1 < a2 and b1 < b2 and b1 < a2 and a1 < b2 and b2 < b1: print(a2, b2) elif a1 == a2 and b1 == b2: print(a1, b1) elif a1 > a2 and b1 > a2 and b2 < b1 and a1 < b2: print(a1, b2) elif a1 > a2 and b1 == b2:
    print(a1, b1)
elif a1 > a2 and b1 > b2 and a1 < b2: print(a1, a2, ) elif a1 > a2 and a1 < b2 and a2 < b1:
    print(a1, a2)
elif a1 < a2 and a1 < b2 and b1 < a2 and b1 < b2 and b1 > a2:
    print(b1, a2)
else:
    print('пустое множество')
# Вывод:
1
3
4
8
пустое множество


Оцените статью
О Python на русском языке
Добавить комментарий

  1. Алтай

    Пока не проверил, просто скопировал. Тем не менее спасибо огромное.

    Ответить
  2. k.g

    Спасибо большое! Благодарю ! Скопировала.

    Ответить
  3. Александр

    В последней задаче про определение отрезков ошибка.
    if min(b1, b2) < max(a1, a2):
    print('пустое множество')
    Данное условие не является достаточным для подтверждения отсутствия пересечения, т.к. максимальное значение в 1 множестве может находиться в пределах второго множества.
    Исправьте на:
    if max(b1, b2) < min(a1, a2):
    print('пустое множество')

    Ответить
    1. Иван Душенко автор

      Давайте, как принято в хорошей разработке, опираться на тесты. Вот набор данных, соответствующий Вашему утверждению «Данное условие не является достаточным для подтверждения отсутствия пересечения, т.к. максимальное значение в 1 множестве может находиться в пределах второго множества»:
      1
      5
      4
      6
      Запускаем скрипт и проверяем:
      4 5
      Вывод: полное соответствие исходным условиям.
      Если у Вас есть другой набор тестовых данных, при котором скрипт работает не правильно, прошу Вас его предоставить.

      Возможно, Вас запутало невыразительное именование переменных. Здесь b1, b2 — правые концы отрезков, а a1, a2 — левые.

      Ответить
  4. Дмитрий

    Как вариант по написанию последнего задания. Мне кажется, так понятнее, чем в предложенных вариантах (хотя тут дело вкусов, наверное, как и в еде)

    # Task 26 — Пересечение отрезков
    coordinate1 = int(input(‘Введите 1 координату для отрезка 1:\t’))
    coordinate2 = int(input(‘Введите 2 координату для отрезка 1:\t’))
    coordinate3 = int(input(‘Введите 1 координату для отрезка 2:\t’))
    coordinate4 = int(input(‘Введите 2 координату для отрезка 2:\t’))
    range1 = range(coordinate1, coordinate2+1)
    range2 = range(coordinate3, coordinate4+1)
    cross = []
    for i in range1:
    if i in range2:
    cross.append(i)
    if len(cross) == 0:
    print(‘Нет точек пересечения’)
    elif len(cross) == 1:
    print(‘точка пересечения:\t’, cross[0])
    else:
    print(‘точки пересечения: от’, cross[0], ‘до’, cross[-1])

    Ответить
    1. Виктор К.

      +100500!

      Ответить
  5. Игорь

    В примере «самописный калькулятор» можно математическую операцию (которая строка) забрать из конца и вставить между числами. Т.е. было 1,2,* а станет 1,*,2. Так более «человекочитаемо».

    Ответить
  6. INATILLA

    a1 = int(input())
    a2 = int(input())
    a3 = int(input())
    if a1 == a2 == a3:
    print(‘Равносторонний’)
    elif a2 == a3 or a1 == a3 or a1 == a2:
    print(‘Равнобедренный’)
    else:
    print(‘Разносторонний’)
    # Вывод:
    1
    3
    2
    Разносторонний

    Здесь в место else надо было написать
    elif:
    a1+a2>a3 or a2+a3>a1 or a1+a3>a2:
    print(«Разносторонний»)
    else:
    print («эти отрезки не могут быть сторонами триугольника»)

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

    Ответить
    1. INATILLA

      a1+a2>a3 or a2+a3>a1 or a1+a3>a2: Здесь в место or надо «and» извиняюсь

      Ответить
  7. INATILLA

    a, b, c = int(input(‘Введите 1-число: ‘)), int(input(‘Введите 2-число: ‘)), int(input(‘Введите 3-число: ‘))
    if (a == b or b == c or a == c) and (a + b > c and b + c > a and a + c > b):
    print(‘Равнобедерный’)
    elif a == b == c:
    print(‘Равносторонний’)
    elif a + b > c and b + c > a and a + c > b:
    print(‘Разносторонний’)
    else:
    print(‘Эти отрезки не могут быть сторонами триугольника’)

    Ответить
  8. INATILLA

    col1 = str(input(«Введте один из цветов ‘Красный’, ‘Cиний’, ‘Желтый’: «))
    col2 = str(input(«Введте один из цветов ‘Красный’, ‘Cиний’, ‘Желтый’: «))
    if (col1.title() == ‘Красный’ and col2.title() == ‘Синий’) or (col1.title() == ‘Синий’ and col2.title() == ‘Красный’) :
    print(‘В результате смешивания получился цвет: Фиолетовый’)
    elif (col1.title() == ‘Красный’ and col2.title() == ‘Желтый’) or (col1.title() == ‘Желтый’ and col2.title() == ‘Красный’) :
    print(‘В результате смешивания получился цвет: Оранжевый’)
    elif (col1.title() == ‘Синий’ and col2.title() == ‘Желтый’) or (col1.title() == ‘Синий’ and col2.title() == ‘Желтый’):
    print(‘В результате смешивания получился цвет: Зеленый’)
    elif col1.title() == col2.title():
    print(‘В результате смешивания получился цвет:’, col1.title())
    else:
    print(«Правильно введите цвет»)

    Ответить
  9. INATILLA

    a1 = int(input(‘Введите координаты 1-отрезка: ‘))
    b1 = int(input(‘Введите координаты 1-отрезка: ‘))
    a2 = int(input(‘Введите координаты 2-отрезка: ‘))
    b2 = int(input(‘Введите координаты 2-отрезка: ‘))
    if (a2 > a1 and a2 < b1 and b2 < b1 and a2 != b2):
    print('Отрезок:', a2, b2)
    elif a2 a1 and b2 < b1:
    print('Отрезок:', a1, b2)
    elif a2 a1 and b2 > b1:
    print(‘Отрезок:’, a1, b1)
    elif a2 > a1 and a2 b1:
    print(‘Отрезок:’, a2, b1)
    elif a2 > a1 and a2 < b1 and a2 == b2:
    print('Точка:', a2, b2)
    else:
    print('Пустое множество')

    Ответить
  10. Vasiliy

    в задаче про теугольники нужно еще проверять на возможность существования такого треугольника (большая сторона меньше суммы двух других сторон). В рассмотренном примере стороны равны 1, 2 и 3 — треугольник несуществующий.

    Ответить
  11. Alex

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

    Ответить
Adblock
detector