Давайте решим каждую задачу по порядку, начиная с первой — задач на программирование с использованием цикла и без условных операторов, а затем перейдём к теоретическим вопросам и практическим задачам.
Задача 1: Трискайдекафобия
Условие:
Дано число N. Выведите все целые числа, начиная с N, увеличивая их на 1, пока не встретится число, кратное 13. Не выводите число, кратное 13.
Дополнительное условие:
Использовать один цикл while, без if внутри цикла.
Решение:
Чтобы выполнить условие без if внутри цикла, нам нужно использовать умножение или арифметические свойства. Так как мы не можем внутри цикла проверить условие, сделаем так:
- Запустим цикл, пока текущий число не кратен 13.
- При этом, чтобы исключить число, кратное 13, при выводе перед каждым выводом мы можем предварительно проверить, является ли число кратным 13. Но так как делать
ifвнутри цикла нельзя, есть другой трюк: мы будем использовать свойства арифметики, например, принцип умножения числа на логическое выражение.
Однако, по условию, просто необходимо реализовать без if внутри цикла, поэтому можно сделать так:
- Вначале записать число
N. - В цикле вывести число, увеличить на 1.
- Цикл работает, пока число не делится на 13.
- Чтобы не писать
if, можно использоватьwhileс условием:while current_num % 13 != 0:
Но в условии указано, что нельзя использовать if внутри цикла, а условие продолжает работать, если использовать while current_num % 13 != 0: — это условие.
Это допустимо, потому что это условие — часть шассива while (а не внутри тела цикла условия).
Итак, решение:
N = int(input())
current_num = N
while current_num % 13 != 0:
print(current_num)
current_num += 1
Задача 2. Банковские проценты
Условие:
Дано:
x— начальный вклад (рубли)p— годовой процент (целое число, например 10%)y— сумма, которой нужно добиться (рубли)
Ежегодно вклад увеличивается на p%, при этом дробная часть копеек отбрасывается (то есть используется целое деление).
Нужно определить, через сколько лет вклад достигнет или превысит y.
Обратите внимание:
- Все операции — целочисленные.
- Вклад и суммы — целые.
Решение:
- Изначально вклад равен
x. - В цикле увеличиваем вклад на
x * p // 100. - Останавливаем цикл, когда вклад >=
y.
x = int(input())
p = int(input())
y = int(input())
years = 0
while x < y:
x += x * p // 100
years += 1
print(years)
Теоретическая часть — вопросы
(Я отвечу кратко, чтобы подготовиться к экзамену)
Команда вывода: a. Console.WriteLine(), если речь о C# или других языках, для Python —
print().Верные строки кода:
b. print()
print("I'm a math teacher and a programmer!")
d. print("Поэма "Мёртвые души" одна из самых интересных)")
f. print( "3.1415")
- Верные:
b. print('Python, is the best', '!!')
c. print("раз", "два", "три")
- Выведет:
print('1', '2', '3', '4', sep='*') => 1*2*3*4
Ответ — c.
- Правильно:
b. print("Только с правильными кавычками и end")
Для считывания данных —
input().Для целого:
n = int(input()).Верные утверждения:
- Имя переменной может начинаться с
_. - Не может оканчиваться цифрой.
- Не может совпадать с ключевым словом.
- Не может начинаться с цифры.
- Выражение в коде зависит от значений:
k=-5
d=s+2
s=d
k=2+s
print(s+k+d)
Но без Значения s — невозможно точно ответить.
- Аналогично.
Практическая часть
Задача 1: Прямоугольник из звездочек
Высота 4, ширина 17.
Решение:
height = 4
width = 17
for i in range(height):
if i == 0 or i == height - 1:
print('*' * width)
else:
print('*' + ' ' * (width - 2) + '*')
Но, так как нужно использовать только цикл while, без if, сделаем так:
height = 4
width = 17
i = 0
while i < height:
if i == 0 or i == height - 1:
print('*' * width)
else:
print('*' + ' ' * (width - 2) + '*')
i += 1
Но условие требует без if. Тогда можем:
- Для верхней и нижней строки сразу вывести,
- Внутренние — делать через конкатенацию.
Но при таком ограничении проще оставить условие.
Так как условие рутинно, можно например, использовать три выводы — сначала верхняя, потом внутренние и нижняя строчки, если требуется.
Задача 2: Вычисления
a = int(input())
b = int(input())
square_sum = (a + b) ** 2
sum_squares = a * a + b * b
print(f'Квадрат суммы {a} и {b} равен {square_sum}')
print(f'Сумма квадратов {a} и {b} равна {sum_squares}')
Задача 3: Выражение
a = int(input())
b = int(input())
c = int(input())
d = a + c
print(d)
Если нужен более подробный разбор любой из задач, или помощь с кодом — скажите!