Try   HackMD

Практика по теме 6. Циклы с проверкой условий

На сайте http://pythontutor.ru/lessons/while/problems/list_of_squares/ решить все задачи к занятию 6. Цикл while

Выслать архив с решениями всех задач (файлы с расширением .py) и скриншотом с сайта, на котором видно количество решенных задач и имя текущего пользователя.

Задача 1. Список квадратов

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

Решение
N = int(input())
i = 1
while i ** 2 <= N:
    print(i ** 2, end = ' ')
    i += 1

Задача 2. Минимальный делитель

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

Решение
a = int(input())
b = 2
while a % b != 0:
    b += 1
print(b)

Задача 3. Степень двойки

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

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

Решение
n = int(input())
a = 1
a_in_power = 2
while n >= a_in_power:
    a += 1
    a_in_power *= 2
print(a-1, a_in_power // 2)

Задача 4. Утренняя пробежка

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

Программа получает на вход действительные числа x и y и должна вывести одно натуральное число.

Решение
x = float(input())
y = float(input())
d = 1
while x < y:
    x *= 1.1
    d += 1
print(d)

Задача 5. Длина последовательности

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

Решение
number = int(input())
count = 0
while number != 0:
    count += 1
    number = int(input())
print(count)

Задача 6. Сумма последовательности

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

Решение
number = int(input())
sum = 0
while number != 0:
    sum += number
    number = int(input())
print(sum)

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

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

Решение
number = int(input())
count, sum = 0, 0
while number != 0:
    count += 1
    sum += number
    number = int(input())
print(sum / count)

Задача 8. Максимум последовательности

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

Решение
number = int(input())
max = number
while number != 0:
    number = int(input())
    if number > max:
        max = number
print(max)

Задача 9. Индекс максимума последовательности

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

Решение
number = int(input())
count = 0
max = number
max_index = 0
while number != 0:
    number = int(input())
    count += 1
    if number > max:
        max, max_index = number, count
print(max_index)

Задача 10. Количество четных элементов последовательности

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

Решение
number = int(input())
count = 0
while number != 0:
    if number % 2 == 0:
        count += 1
    number = int(input())
print(count)

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

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

Решение
count = 0
prev = int(input())
number = int(input())
while number != 0:
    if number > prev:
        count += 1
    prev = number
    number = int(input())
print(count)

Задача 12. Второй максимум

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

Решение
max = max2nd = 0
number = int(input())
while number != 0:
    if number > max:
        max, max2nd = number, max
    elif number > max2nd:
        max2nd = number
    number = int(input())
print(max2nd)

Задача 13. Количество элементов, равных максимуму

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

Решение
max = count = 0
number = int(input())
while number != 0:
    if number > max:
        max = number
        count = 1
    elif number == max:
        count += 1
    number = int(input())
print(count)

Задача 14. Числа Фибоначчи

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

ϕ0=0,ϕ1=1,ϕn=ϕn1+ϕn2

По данному числу n определите n-е число Фибоначчи φn.

Эту задачу можно решать и циклом for.

Решение
n = int(input())
if n < 2:
    print(n)
else:
    prev, prev2 = 1, 0
    for _ in range(2, n + 1):
        number = prev + prev2
        prev, prev2 = number, prev
    print(number)

Задача 15. Номер числа Фибоначчи

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

ϕn=A. Если А не является числом Фибоначчи, выведите число -1.

Решение
A = int(input())
if A == 1:
    print(1)
else:
    number, prev, prev2 = 1, 1, 0
    n = 1
    while number < A:
        number = prev + prev2
        prev, prev2 = number, prev
        n += 1
        if number == A:
            print(n)
            break
    else:
        print(-1)

Задача 16. Максимальное число идущих подряд равных элементов

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

Решение
prev = count = 0
max = 1
number = int(input())
while number != 0:
    if number == prev:
        count += 1
        if count > max:
            max = count
    else:
        count = 1
    number, prev = int(input()), number
print(max)

Задача 17. Стандартное отклонение

Дана последовательность натуральных чисел

x1,x2,,xn. Стандартным отклонением называется величина

σ=(x1s)2+(x2s)2++(xns)2n1

где

s=x1+x2++xnn среднее арифметическое последовательности.

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

Решение
import math
n = sum_x = sum_x2 = 0
number = int(input())
while number != 0:
    n += 1
    sum_x += number
    sum_x2 += number ** 2
    number = int(input())
s = sum_x / n
print(math.sqrt((sum_x2 - 2 * s * sum_x + n * (s ** 2)) / (n - 1)))