Сложные задачи для python

Содержание
  1. Цикл while
  2. Примеры решения задач
  3. Решение задач
  4. Сложные задачи
  5. Python: 18 задач на вывод символов по заданному шаблону
  6. 1. Простой числовой треугольник
  7. 2. Обратный числовой треугольник
  8. 3. Полупирамида из чисел
  9. 4. Обратная пирамида из уменьшающихся чисел
  10. 5. Обратная пирамида, все элементы которой представлены одним и тем же числом
  11. 6. Пирамида из чисел, расположенных в обратном порядке
  12. 7. Обратная полупирамида из чисел
  13. 8. Пирамида из натуральных чисел меньше 10
  14. 9. Пирамида из чисел от 10, расположенных в обратном порядке
  15. 10. Пирамида из определённых наборов цифр
  16. 11. Обратная пирамида из связанных чисел
  17. 12. Пирамида из чётных чисел
  18. 13. Пирамида из наборов чисел
  19. 14. Пирамида, в каждой строке которой выводятся разные числа
  20. 15. Зеркально отражённая пирамида из чисел (прямоугольный числовой треугольник)
  21. 16. Равносторонний треугольник из символов *
  22. 17. Перевёрнутый треугольник из символов *
  23. 18. Пирамида из символов *
  24. Где взять задачи по 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 — международная платформа с алгоритмическими и другими задачами с собеседований (минус: всё на английском языке);
  • курс «Алгоритмы для разработчиков» в Практикуме, если хочется научиться решать такие задачи.
  • Задачи по математике. Сборник задач, большинство из которых решается программированием. Никогда не будет лишним.

Источник

Читайте также:  Java web development server
Оцените статью