- Цикл while
- Примеры решения задач
- Решение задач
- Сложные задачи
- Python: 18 задач на вывод символов по заданному шаблону
- 1. Простой числовой треугольник
- 2. Обратный числовой треугольник
- 3. Полупирамида из чисел
- 4. Обратная пирамида из уменьшающихся чисел
- 5. Обратная пирамида, все элементы которой представлены одним и тем же числом
- 6. Пирамида из чисел, расположенных в обратном порядке
- 7. Обратная полупирамида из чисел
- 8. Пирамида из натуральных чисел меньше 10
- 9. Пирамида из чисел от 10, расположенных в обратном порядке
- 10. Пирамида из определённых наборов цифр
- 11. Обратная пирамида из связанных чисел
- 12. Пирамида из чётных чисел
- 13. Пирамида из наборов чисел
- 14. Пирамида, в каждой строке которой выводятся разные числа
- 15. Зеркально отражённая пирамида из чисел (прямоугольный числовой треугольник)
- 16. Равносторонний треугольник из символов *
- 17. Перевёрнутый треугольник из символов *
- 18. Пирамида из символов *
- Где взять задачи по python (от простых к сложным) ?
Цикл while
Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.
i = 0
while i 5 :
print (i)
i += 1
Цикл while и цикл for имеют схожую структуру, НО есть одно важное различие — цикл while может быть бесконечным.
i = 0
while True :
print (i)
i += 1
# Вывод:
>>> 0
>>> 1
>>> 2
>>> 3
>>> 4
# Это может продолжаться долго.
Код выше будет бесконечно печатать возрастаютщую последовательность чисел.
Цикл while можно сравнить с цикличным условным оператором.
text = ‘Hello world’
i = 0
while i len (text):
print (text[i])
i += 1
Код, приведенный выше, печатает строку посимвольно. Приведу пример аналогичного цикла for:
text = ‘Hello world’
for i in text:
print (i)
Более того, я приведу даже два цикла for!
text = ‘Hello world’
for i in range ( len (text)):
print (text[i])
Напомню, что отличие между двумя, приведенными выше примерами, в следующем: первый цикл проходит по элементам последовательности (в нашем случае строки), а второй — по ее индексам. Здесь также используется функция len(), которая позволяет узнать длину последовательности.
Вернемся к циклу while. Цикл while, как и цикл for, можно остановить с помощью специальной управлющей конструкции break.
j = 0
while True :
if j == 3 :
print ( ‘Выход из цикла’ )
break
print (j)
j += 1
Конструкция break прерывает цикл. Она очень похожа на обычное условие после ключевого слова while.
Так же есть еще одна управляющая конструкция — continue. С ее помощью мы можем не выпонять текущую итерацию (повторение) цикла и перейти сразу к следующему.
j = 0
while j 5 :
j += 1
if j == 3 :
print ( ‘Пропускаем j == 3 ‘ )
continue
print (j)
Как и для цикла for, для цикла while мы можем записать конструкцию else.
from random import randint
j = 0
element = randint ( 0 , 15 )
while j 10 :
j += 1
if j == element:
print ( ‘Нашли element, он равен’ , element)
break
else :
print ( ‘Неудачная попытка’ )
Примеры решения задач
Возведение числа в степень с помощью цикла while
n = int ( input ()) # число
k = int ( input ()) # степень
i = 1 # текущая степень
result = 1
while i k:
result *= n
i += 1
print (result)
Сумма последовательности с помощью цикла while
n = int ( input ())
result = 0
i = 0
while i n:
result += i
i += 1
print (result)
Ввод последовательности чисел
i = 0
while True :
n = input ()
if n == ‘end’ :
print ( ‘Ввод закончен’ )
print ( ‘Было введено’ , i, ‘чисел’ )
break
n = int (n)
i += 1
i = 0
summa = 0
while True :
n = input ()
if n == ‘end’ :
print ( ‘Ввод закончен’ )
print ( ‘Было введено’ , i, ‘чисел’ )
print ( ‘Их сумма равна’ , summa)
break
n = int (n)
summa += n
i += 1
Решение задач
1. Дано положительное число N. Вывести все числа от 0 до N с помощью цикла while.
2. Дано положительное число N. Вывести все числа от N до 0 с помощью цикла while. Пример:
3. Даны два положительных числа K и N (K 4. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти длину незанятой части отрезка A (взятие остатка A % B)
5. Даны положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Не используя операции умножения и деления, найти количество отрезков B, размещенных на отрезке A (деление нацело A // B)
6. Дано положительное число N. Найти сумму всех четных чисел от 0 до N с помощью цикла while.
7. Даны два положительных числа K и N (K нечетных чисел от K до N с помощью цикла while.
8. Дано положительное число N. Найти факториал числа N. Факториалом числа называется произведение всех чисел от 1 до N. Например, факториал числа 5 равен 5! = 1*2*3*4*5 = 120 , 2! = 1*2 = 2 , 9! = 1*2*3*4*5*6*7*8*9 = 362880
9. Дано целое число N (> 0). Если оно является степенью числа 3, то вывести YES, если не является — вывести NO.
10. Дано целое число N (> 0). Найти двойной факториал N: N!! = N * (N-2) * (N-4)* . . Для решения этой задачи посмотрите на задачу 2
Сложные задачи
1. Дано целое число N (> 1). Найти наименьшее целое число K, при котором выполняется неравенство 3^K > N, где 3^K — это 3 в степени K или число 3, умноженное само на себя K раз. Например, 3^5 = 3*3*3*3*3 . Ответом в задаче будет первая степень числа 3, которая больше, чем заданное число N. Например, если N=41, распишем степени числа три: 3^1 = 3; 3^2 = 3*3 = 9; 3^3 = 3*3*3 = 27; 3^4 = 3*3*3*3 = 27 * 3 = 81; . Таким образом, первая степень, в которую возвести число 3, превышающая число N — это 4.
В этой задаче нужно выполнять цикл while, пока остаток от деления на число три равен 0
2. Дано целое число N (> 0). Используя операции деления нацело и взятия остатка от деления, вывести все его цифры, начиная с самой правой (разряда единиц).
Перед решением этой задачи вспомните, как найти сумму цифр трехначного числа.
3. Даны целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида: НОД(A, B) = НОД(B, A mod B), если B = 0; НОД(A, 0) = A.
4. Спортсмен-лыжник начал тренировки, пробежав в первый день 10 км. Каждый следующий день он увеличивал длину пробега на P процентов от пробега предыдущего дня (P — вещественное, 0 5. Дано целое число N (> 1). Последовательность чисел Фибоначчи FK определяется следующим образом: F(1) = 1, F(2) = 1, F(K) = F(K-2) + F(K-1), K = 3, 4, . . Проверить, является ли число N числом Фибоначчи. Если является, то вывести TRUE, если нет — вывести FALSE.
6. Даны положительные числа A, B, C. На прямоугольнике размера A x B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.
7. Дано целое число N (> 1), являющееся числом Фибоначчи: N = F(K). Найти целое число K — порядковый номер числа Фибоначчи N.
Python: 18 задач на вывод символов по заданному шаблону
Подготовка к техническому собеседованию по Python — нелёгкая задача. На таком собеседовании вам, вполне возможно, встретятся задачи на вывод символов по заданным шаблонам. Если вы хотите научиться решать такие задачи — вам может пригодиться подборка способов их решения, приведённая в этом материале.
Здесь продемонстрировано 18 примеров кода. Начинающие программисты вполне могут проработать всё по порядку, а опытные могут разобраться именно с тем, что им нужно. Главное — понять, как устроен тот или иной пример. Отсутствие чёткого понимания того, что происходит в программах, способно сыграть злую шутку с тем, кто, например, заучив фрагмент кода и воспроизведя его на собеседовании, попытается объяснить то, как именно этот код работает. А тех, кто проводит собеседование, часто интересуют именно такие вот разъяснения.
1. Простой числовой треугольник
1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
rows = 6 for num in range(rows): for i in range(num): print(num, end=" ") # вывод числа # вывод пустой строки после каждой строки с числами для правильного отображения шаблона print(" ")
2. Обратный числовой треугольник
1 1 1 1 1 2 2 2 2 3 3 3 4 4 5
rows = 5 b = 0 for i in range(rows, 0, -1): b += 1 for j in range(1, i + 1): print(b, end=' ') print('\r')
3. Полупирамида из чисел
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
rows = 5 for row in range(1, rows+1): for column in range(1, row + 1): print(column, end=' ') print("")
4. Обратная пирамида из уменьшающихся чисел
5 5 5 5 5 4 4 4 4 3 3 3 2 2 1
rows = 5 for i in range(rows, 0, -1): num = i for j in range(0, i): print(num, end=' ') print("\r")
5. Обратная пирамида, все элементы которой представлены одним и тем же числом
5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
rows = 5 num = rows for i in range(rows, 0, -1): for j in range(0, i): print(num, end=' ') print('\r')
6. Пирамида из чисел, расположенных в обратном порядке
1 2 1 3 2 1 4 3 2 1 5 4 3 2 1
rows = 6 for row in range(1, rows): for column in range(row, 0, -1): print(column, end=' ') print("")
7. Обратная полупирамида из чисел
0 1 2 3 4 5 0 1 2 3 4 0 1 2 3 0 1 2 0 1
rows = 5 for i in range(rows, 0, -1): for j in range(0, i + 1): print(j, end=' ') print('\r')
8. Пирамида из натуральных чисел меньше 10
currentNumber = 1 stop = 2 rows = 3 # Количество строк, из которых состоит пирамида for i in range(rows): for column in range(1, stop): print(currentNumber, end=' ') currentNumber += 1 print("") stop += 2
9. Пирамида из чисел от 10, расположенных в обратном порядке
start = 1 stop = 2 currentNumber = stop for row in range(2, 6): for col in range(start, stop): currentNumber -= 1 print(currentNumber, end=' ') print("") start = stop stop += row currentNumber = stop
10. Пирамида из определённых наборов цифр
1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1
rows = 6 for i in range(1, rows + 1): for j in range(1, i - 1): print(j, end=" ") for j in range(i - 1, 0, -1): print(j, end=" ") print()
11. Обратная пирамида из связанных чисел
5 4 3 2 1 1 2 3 4 5 5 4 3 2 2 3 4 5 5 4 3 3 4 5 5 4 4 5 5 5
rows = 6 for i in range(0, rows): for j in range(rows - 1, i, -1): print(j, '', end='') for l in range(i): print('', end='') for k in range(i + 1, rows): print(k, '', end='') print('\n')
12. Пирамида из чётных чисел
10 10 8 10 8 6 10 8 6 4 10 8 6 4 2
rows = 5 LastEvenNumber = 2 * rows evenNumber = LastEvenNumber for i in range(1, rows+1): evenNumber = LastEvenNumber for j in range(i): print(evenNumber, end=' ') evenNumber -= 2 print("\r")
13. Пирамида из наборов чисел
0 0 1 0 2 4 0 3 6 9 0 4 8 12 16 0 5 10 15 20 25 0 6 12 18 24 30 36
rows = 7 for i in range(0, rows): for j in range(0, i + 1): print(i * j, end=' ') print()
14. Пирамида, в каждой строке которой выводятся разные числа
1 3 3 5 5 5 7 7 7 7 9 9 9 9 9
15. Зеркально отражённая пирамида из чисел (прямоугольный числовой треугольник)
1 1 2 1 2 3 1 2 3 4 1 2 3 4 5
rows = 6 for row in range(1, rows): num = 1 for j in range(rows, 0, -1): if j > row: print(" ", end=' ') else: print(num, end=' ') num += 1 print("")
16. Равносторонний треугольник из символов *
size = 7 m = (2 * size) - 2 for i in range(0, size): for j in range(0, m): print(end=" ") m = m - 1 # уменьшение m после каждого прохода цикла for j in range(0, i + 1): # вывод пирамиды из звёздочек print("*", end=' ') print(" ")
17. Перевёрнутый треугольник из символов *
rows = 5 k = 2 * rows - 2 for i in range(rows, -1, -1): for j in range(k, 0, -1): print(end=" ") k = k + 1 for j in range(0, i + 1): print("*", end=" ") print("")
18. Пирамида из символов *
rows = 5 for i in range(0, rows): for j in range(0, i + 1): print("*", end=' ') print("\r")
Какие задачи вы посоветовали бы прорешать тем, кто готовится к собеседованию по Python?
Где взять задачи по python (от простых к сложным) ?
«Задачи по python» — слишком обширное понятие, потому что задачи, которые можно решать на питоне, бывают очень разными. Рассмотрим их типы.
- Аналитические задачи. В них надо манипулировать таблицами с данными, выполнять статистический анализ, чистить данные и делать выводы на их основе. Для этого подойдёт подборка Pandas Exercises на Github. Попрактиковаться решать такие задачи в тренажёре можно в бесплатной части курса «Аналитик данных» в Яндекс.Практикуме.
- Задачи на машинное обучение. Python, пожалуй, самый популярный язык для решения таких задач. Ещё одна подборка задач на Github ― Numpy-100. Numpy — это математическая библиотека в Python, которая активно используется в машинном обучении. Ещё можно сходить на платформу Kaggle.com, где проходят соответствующие соревнования. Но для участия в таких соревнованиях нужно немного уметь в машинном обучении и знать базовый синтаксис Python. Есть международное сообщество Open Data Science, на сайте которого тоже можно найти полезные материалы. Но с ходу начать решать задачи по машинному обучению практически невозможно, если хочется научиться, приходите на курс «Специалист по Data Scientist» в Яндекс.Практикум. Наши студенты учатся разрабатывать модель для определения стоимости автомобиля с пробегом и прогнозировать спрос на авиабилеты в определённые города.
- Алгоритмические задачи. Их можно решать на самых разных языках программирования, в том числе на Python. Такие задачи часто встречаются на собеседованиях в больших технологических компаниях. Здесь могу порекомендовать:
- codeforces.ru — платформа, на которой проходят соревнования по решению алгоритмических задач разного уровня;
- acm.timus.ru — большой архив задач разных уровней сложности: от школьных до задач с полуфиналов чемпионата мира по программированию;
- hackerrank.com — международная платформа с алгоритмическими и другими задачами с собеседований (минус: всё на английском языке);
- курс «Алгоритмы для разработчиков» в Практикуме, если хочется научиться решать такие задачи.
- Задачи по математике. Сборник задач, большинство из которых решается программированием. Никогда не будет лишним.