Инфоурок Информатика Другие методич. материалыВведение в программирование на языке Python. 6 Модуль. Теория. Цикл while.

Введение в программирование на языке Python. 6 Модуль. Теория. Цикл while.

Скачать материал

7  Модуль. Цикл while

Цикл while ("пока") — это так называемый цикл с условием или с предусловием. В цикле for мы явно указываем, какие значения будет принимать переменная i, например, 1 <= i <= 10. В цикле while можно задавать более сложные условия, например, i ** 2 <= 10, кроме того можно использовать логические операции "И", "ИЛИ" и т.д.

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

 

Синтаксис цикла while в простейшем случае выглядит так:

while условие:

    блок инструкций

 

При выполнении цикла while сначала проверяется условие. Если оно ложно, то выполнение цикла прекращается, и управление передаётся на следующую инструкцию после тела цикла while . Если условие истинно, то выполняются все инструкции из блока, после чего условие проверяется снова, и снова выполняется блок инструкций. Так продолжается до тех пор, пока условие будет истинно. Как только условие становится ложным, работа цикла завершается, и управление передаётся следующей инструкции после цикла.

Пример:

Следующий фрагмент программы напечатает на экран всех целые числа, не превосходящие n, и их сумму:

s = 0

i = 1

while i <= n:

    print(i)

    s += i

    i += 1

 

Пример:

C предыдущей задачей, однако, мог бы справиться и цикл for . Рассмотрим более сложную задачу, с которой for уже не справится: вывести на экран все степени двойки, не превосходящие 100. Её также удобно решать с помощью цикла while.

i = 1

while i <= 100:

    print(i)

    i *= 2

 

После окончания цикла значение i будет уже больше, чем 100, иначе цикл бы продолжился. Последнее напечатанное значение будет соответственно равно 64.

Пример:

Немного изменим задачу: найдём максимальную степень двойки, не превосходящую 100.

p = 1

while p * 2 <= 100:

    p *= 2

print(p)

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

Пример:

Вот еще один пример использования цикла while для определения количества цифр натурального числа n и их суммы:

s = 0

n = int(input())

count = 0

while n > 0:

    count += 1

    s += n % 10

    n //= 10

print(count)

print(s)

В этом цикле мы отбрасываем по одной цифре числа, начиная с конца, что эквивалентно целочисленному делению на 10  (n //= 10), при этом считаем в переменной count, сколько раз это было сделано, а в переменной s — сумму отброшенных цифр.

 

Задачи.

 

Трискайдекафобия

 

Трискайдекафобия — боязнь числа 13. В особо сложных формах пациент боится и всех чисел, кратных 13.

Дано число N. Выведите все целые числа по возрастанию, начиная с числа N, пока не встретится число, кратное 13. Его выводить не нужно.

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

Дано натуральное число N, не превосходящее 10000.

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

Выведите ответ на задачу.

Примечание

Программа должна быть решена при помощи одного цикла while, без if внутри цикла.

   

 

Решение.

 

Номер числа Фибоначчи

Последовательность Фибоначчи определяется так:

ϕ0=0, ϕ1=1, ϕnn−1n−2

Дано натуральное число A. Определите, каким по счету числом Фибоначчи оно является, то есть выведите такое число n, что ϕn=A. Если A не является числом Фибоначчи, выведите число −1.

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

Вводится натуральное число A (2≤A≤2109).

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

Выведите ответ на задачу.

 

Точная степень двойки

 

Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае.

Операцией возведения в степень пользоваться нельзя!

 

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

Вводится натуральное число, не превосходящее 200.

 

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

Выведите ответ на задачу.

 

 

Банковские проценты

Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть от копеек отбрасывается. Определите, через сколько лет вклад составит не менее y рублей. В задаче запрещено использовать дробные числа.

 

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

Программа получает на вход три натуральных числа: xpy (x2000,p100,y2000).

 

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

Программа должна вывести одно целое число — ответ на задачу.

 

Примечание

Обратите внимание, что вклад в банке измеряется в рублях, а отбрасывается дробная часть копеек.

Решение

Минимальный простой делитель

Дано целое число, не меньшее 2. Выведите его наименьший простой делитель.

 

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

Вводится целое положительное число N2109.

 

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

Выведите ответ на задачу.

 

Решение

 

Список квадратов

По данному целому числу N распечатайте все квадраты натуральных чисел, не превосходящие N, в порядке возрастания.

 

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

Вводится натуральное число, не превосходящее 100.

 

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

Выведите ответ на задачу.

Решение

 

 

Обработка последовательностей неизвестной длины.

 

С помощью цикла for мы могли решать задачи, обрабатывающие последовательности числовых данных, например, посчитать сумму или произведение элементов некоторой последовательности с известным числом элементов.

Однако бывают случаи, когда заранее неизвестно число элементов последовательности, а ввод ограничен тем или иным образом. С использованием цикла while можно решать задачи для этого случая. Рассмотрим пример такой задачи.

 

Пример:

Дана последовательность натуральных чисел, заканчивающаяся нулем. Требуется найти произведение и количество этих чисел (ноль не должен участвовать в нахождении произведения).

 

Решение может выглядеть так:

 

count = 0
prod = 1
elem = int(input())
while elem != 0:
    count += 1
    prod *= elem
    elem = int(input())
print(prod)
print(count)

 

Рассмотрим более сложную задачу.

Пример:

Дана последовательность неизвестной длины, требуется вывести первое число, которое встречается два раза подряд. Гарантируется, что такое число существует.

Для решения задачи потребуется хранить не только текущее считанное значение, но и предыдущее:

 

prev = int(input())
elem = int(input())
while elem != prev:
    prev = elem
    elem = int(input())
print(elem)
 

Второй минимум

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

Последнее число 0 не учитывается. Гарантируется, что в последовательности есть хотя бы два элемента (кроме завершающего числа 0).

 

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

На вход подаётся последовательность целых неотрицательных чисел, заканчивающаяся нулём. Все числа в последовательности неотрицательные, по значению не превосходящие 109.

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

Выведите ответ на задачу.

Решение

 

 

 

 

Количество элементов, которые больше предыдущего

 

Последовательность состоит из натуральных чисел и завершается числом 0. Определите, сколько элементов этой последовательности больше предыдущего элемента.

 

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

Вводится последовательность натуральных чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак её окончания).

 

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

Выведите ответ на задачу.

Решение

 

Количество локальных максимумов

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

 

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

Дана последовательность натуральных чисел, завершающаяся числом 0. Гарантируется, что все числа не превосходят 100.

 

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

Определите количество строгих локальных максимумов в этой последовательности.

Решение

Среднее значение последовательности

Определите среднее значение всех элементов последовательности, завершающейся числом 0. Сам ноль в последовательность не входит.

Использовать массивы в данной задаче нельзя.

 

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

Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак её окончания).

 

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

Выведите ответ на задачу.

Решение

 

Самое частое число в последовательности

Последовательность состоит из натуральных чисел, причем  какое-то из чисел составляет более половины от общего числа членов последовательности. Найдите это число.

Для решения этой задачи запрещено использование массивов и списков.

 

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

На вход подается последовательность натуральных чисел, заканчивающаяся нулём. Его обрабатывать не нужно. Гарантируется, что все числа не превосходят 109.

 

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

Выведите ответ на задачу.

Решение

Нам дана последовательность чисел и известно, что одно из чисел встречается в последовательности более половины раз. Это число требуется найти.

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

Используем это свойство. Будем запоминать, какое число ans встречалось нам чаще всех и количество count таких появлений этого числа. Если счетчик count равен 0, то мы обновляем переменную ans и увеличиваем счетчик на 1. Если мы встречаем число, записанное в переменной ans, то мы будем увеличивать счетчик на 1, в противном случае будем уменьшать его на 1. Каждому уменьшению счетчика на 1 соответствует увеличение счетчика на 1, которое было произведено ранее, и такая пара операций равносильна удалению двух разных чисел из последовательности. Следовательно, по свойству описанному выше, такой алгоритм найдет нам искомое число и оно будет записано в переменной ans.

Решение:

ans = 0

count = 0

elem = int(input())

while elem != 0:

    if count == 0:

        ans = elem

        count += 1

    elif elem == ans:

        count += 1

    else:

        count -= 1

    elem = int(input())

print(ans)

 

 

Выдача сдачи

Имеется неограниченное количество монет в 12510 рублей. Определите, сколькими способами можно выдать сдачу в n рублей. Например, 5 рублей можно выдать четырьмя способами: 5=2+2+1=2+1+1+1=1+1+1+1+1.

 

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

Программа получает на вход натуральное число n, не превышающее 100.

 

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

Выведите ответ на задачу.

Решение

Решить данную задачу можно следующим образом:

s = int(input())

cnt = 0

 

for a in range(11):

    for b in range(21):

        for c in range(51):

            for d in range(101):

                if a*10+b*5+c*2+d == s:

                    cnt+=1

 print(cnt)

 

Выдача сдачи — 2

 

Имеется неограниченное количество монет в 12510 рублей. Определите, сколькими способами можно выдать сдачу в nn рублей. Например, 55 рублей можно выдать четырьмя способами: 5=2+2+1=2+1+1+1=1+1+1+1+1.

 

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

Программа получает на вход натуральное число n, не превышающее 106.

 

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

Выведите ответ на задачу.

 

Примечание

Правильное решение задачи можно написать, используя всего один цикл while.

Решение

 

 

 

 

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Введение в программирование на языке Python. 6 Модуль. Теория. Цикл while."

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Хранитель музейных предметов

Получите профессию

Фитнес-тренер

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 656 252 материала в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 29.12.2021 19428
    • DOCX 215 кбайт
    • 245 скачиваний
    • Рейтинг: 4 из 5
    • Оцените материал:
  • Настоящий материал опубликован пользователем Шкурин Дмитрий Николаевич. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Шкурин Дмитрий Николаевич
    Шкурин Дмитрий Николаевич
    • На сайте: 7 лет и 4 месяца
    • Подписчики: 5
    • Всего просмотров: 555756
    • Всего материалов: 185

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Бухгалтер

Бухгалтер

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 20 человек из 14 регионов

Курс профессиональной переподготовки

Информатика: теория и методика преподавания в профессиональном образовании

Преподаватель информатики

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 48 человек из 21 региона
  • Этот курс уже прошли 149 человек

Курс повышения квалификации

Использование компьютерных технологий в процессе обучения информатике в условиях реализации ФГОС

36 ч. — 144 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 140 человек из 43 регионов
  • Этот курс уже прошли 1 296 человек

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 50 человек из 29 регионов
  • Этот курс уже прошли 177 человек

Мини-курс

Toolbox классического проектного менеджмента

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Управление и менеджмент в спортивной сфере

7 ч.

1180 руб. 590 руб.
Подать заявку О курсе

Мини-курс

Психологическая работа с эмоциональными и поведенческими проблемами

10 ч.

1180 руб. 590 руб.
Подать заявку О курсе
  • Сейчас обучается 224 человека из 59 регионов
  • Этот курс уже прошли 50 человек