Примеры кода

Ввод с клавиатуры

Функция input() читает 1 строку с клавиатуры.

x = input()

Чтобы прочитать с клавиатуры 2 строки, нужно 2 раза вызвать input()

x = input()   # первую строку прочитали и записали в переменную х
y = input()   # вторую строку прочитали и записали в переменную y

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

x = input()   # 3
y = input()   # 5
print(x+y)    # 35 ???

Почему 35?

x = input()        # 3
y = input()        # 5

print(x, type(x))  # 3 string
print(y, type(y))  # 5 string

z = x+y
print(z, type(z))  # 35 string (две строки написали рядом - конкатенация, concatenation)

Потому что input() вернула строку. У нас есть строка "3" и строка "5", а не числа 3 и 5. Строки оператором + соединяются вместе в строку "35". Строки пишутся одна за другой.

Как исправить?

Мы знаем, что числа будут целые. Поэтому сразу изменим тип данных на int.

x = input()        # 3
y = input()        # 5

x = int(x)
y = int(y)

print(x, type(x))  # 3 int
print(y, type(y))  # 5 int

z = x+y
print(z, type(z))  # 8 int (работаю правила сложения целых чисел)
Можно написать короче. Сразу делаем прочитанные данные int

x = int(input())   # 3, прочитали строку, сделали из строки int
y = int(input()    # 5, прочитали строку, сделали из строки int

print(x, type(x))  # 3 int
print(y, type(y))  # 5 int

z = x+y
print(z, type(z))  # 8 int (работаю правила сложения целых чисел)

Два числа на одной строке

Введем числа не по 1 на строке, а на одной строке через пробел 3 5

x, y = map(int, input().split())   # 3 5
print(x+y)                         # 8

Строку, которую вернул input(), разбили по пробелам на "слова". К каждому "слову" с помощью функции map применили функцию int(). Результат записали в переменные x и y.

Задачи

1. Когда закончится K-тый урок

Уроки начинаются в 8:00. Урок длится 45 минут и 5 минут перемена. Во сколько закончится k-тый урок (k<15). Результат вывести в формате hh:mm

Чтобы напечатать часы h и минуты m с ведущими нулями пишем в старом формате:

print('%02d:%02d' %(h, m))

в новом формате:

print('{:02}:{:02}'.format(h, m))

2. Длина отрезка

Для отрезка на плоскости ХУ напишите функцию length(x1, y1, x2, y2), которая вычисляет расстояние между точками (x1, y1) и (x2, y2).

Программе на вход подаются координаты x1 y1 x2 y2 (на одной строке через пробел).
Программа печатает расстояние между указанными точками.

3. Площадь треугольника (формула Герона)

На плоскости ХУ даны координаты вершин треугольника в формате
x1 y1 x2 y2 x3 y3
(на одной строке через пробел)
Найдите (и напечатайте) площадь этого прямоугольника по формуле Герона

$$s = \sqrt{p \cdot (p - a) \cdot (p - b) \cdot (p - c)}$$

.где a, b, c - длины сторон треугольника, а p = (a+b+c)/2 - его полупериметр.

Для этого напишите функцию s(x1, y1, x2, y2, x3, y3).

4. Часы

Чтобы прочитать часы и минуты в переменные h и m в формате hh:mm пишем

h, m = map(int, input().split(':'))   # делаем split по разделителю ':'

Напишите функции и решите задачи для вывода времени на электронные часы, которые показывают время в формате hh:mm.

4.1 time2min(h, m)

Реализуйте функцию time2min(h, m), которая переводит часы и минуты в минуты с начала суток (00:00).

Проверьте эту функцию.

4.2 min2time(mm)

Реализуйте функцию min2time(mm), которая минуты с начала суток переводит в часы и минуты (для показа на электронных часах).

4.3 Время прибытия электрички

Электричка отправляется в h1:m1 и едет h2:m2. Выведите время прибытия электрички на электронных часах в формате hh:mm.

Формат входных данных: на одной строке h1:m1, на другой h2:m2

4.4 Время в пути

Электричка отправляется в h1:m1 и прибывает в h2:m2. Выведите время в пути электрички в формате hh:mm.

5 Делится на 3 или 5, но не на 15

Дано натуральное число. Напечатайте YES, если число делится на 3 или 5, но не делится на 15. В противном случае напечатайте NO.

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

Дан год (натуральное число). Напечатайте YES, если год високосный. Иначе напечатайте NO.

Год високосный, если он делится на 4, но не делится на 100. Если год делится на 400, то он тоже считается високосным.

7 Наибольший общий делитель (НОД)

Даны 2 числа. Найдите их НОД по алгоритму Евклида. Найдем НОД для чисел 123 и 21.

123 % 21 = 18
21 % 18 = 3
18 % 3 = 1
НОД(125, 21) = 3

8 Наименьшее положительное

Даны целые числа. Напечатать наименьшее положительное из них. Если такого числа нет, то ничего не печатать.

Пример чтения нескольких чисел и их печати.

a = map(int, input().split())
for x in a:
    print(x)

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

2 -7 66 1 0 -3

Выходные данные (печатаем все числа):

2
-7
66
1
0
-3

8.1 Наименьшее положительное (нет такого)

Если положительных чисел нет, печатать Nothing

9 Номера всех положительных чисел в последовательности

Дана последовательность целых чисел на 1 строке через пробел.

Напечатайте индексы всех положительных чисел в этой последовательности.

Если положительных чисел нет, ничего печатать не надо.

10 слияние

На двух строках даны отсортированные (неубывающие) последовательности целых чисел.

Напечатайте по неубыванию все числа.

При длине последовательностей n и m, сложность решения должна быть не более, чем O(n+m)

10 (Дополнительная) Ромашка

Математически угорелая девушка гадает на ромашках о любви. Она срывает ромашку, считает лепестки, вычисляет факториал (fn=fn-1* n, где f1=1) от количества лепестков. Затем подсчитывает сумму цифр полученного числа (fn).

Если сумма - простое число, значит ЛЮБИТ, если составное - НЕ ЛЮБИТ.

Девушке попалось поле с ромашками, у которых встречалось все количество лепестков от 1 до (1 ≤ N ≤ 1000) по одному разу.

Написать программу, которая по максимальному числу лепестков в ромашке вычисляет сколько раз встречается результат "ЛЮБИТ"

Input format: Целое число (1 ≤ N ≤ 1000 ) - максимальное число лепестков.

Output format: Целое число (сколько раз встречается результат "ЛЮБИТ")

Примеры:

Вход Выход
1 0
3 1

Автор: Овсянникова Т.В.

Методические указания

  • Формула Герона - обязательно именно такой формат функции и в функции использовать функцию length, которую написали в предыдущей задаче.
  • Часы - использовать функции перевода в минуты и обратно
  • Деление и високосный год - попробовать реализовать еще и в виде функции (без использования and и or).
  • Наименьшее положительное - подумать о None и for .. else

results matching ""

    No results matching ""