Python для сбора и анализа данных

Алла Тамбовцева, НИУ ВШЭ

Семинар 3: условные конструкции и цикл while

Задача 1

Напишите программу, которая просит пользователя ввести положительное число, и если пользователь вводит положительное число, выводит на экран сообщение "Молодец!", если нет – "Это не положительное число.".

Считайте, что пользователь в любом случае вводит числа, а не какой-то текст.

In [1]:
# решение базовое – по условию

q = float(input())
if q > 0:
    print("Молодец!")
else:
    print("Это не положительное число.")
4
Молодец!
In [2]:
# решение продвинутое – допускаем, что 
# с клавиатуры может быть введён текст,
# который невозможно превратить в число
# используем только if-else, исключения с try-except 
# пока не трогаем
# допускаю, что код можно сделать более компактным 
# и эффективным, но в данной версии проще проследить 
# пошаговую логику решения

x = input()
if x.startswith("-"):
    z = x[1:]
    if z.isdigit():
        print("Это не положительное число.")
    else:
        if z.count(".") == 1:
            y = z.replace(".", "")
            if y.isdigit():
                print("Это не положительное число.")
            else:
                print("X не является числом!")
        else:
            print("X не является числом!")
else:
    if x.isdigit():
        t = int(x)
        if t > 0:
            print("Молодец!")
        else:
            print("Это не положительное число.")               
    else:
        if x.count(".") == 1:
            y = x.replace(".", "")
            if y.isdigit():
                t = float(x)
                if t > 0:
                    print("Молодец!")
                else:
                    print("Это не положительное число.")
            else:
                print("X не является числом!")
        else:
            print("X не является числом!")
-abc
X не является числом!

Задача 2

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

Пример

Ввод:

Введите два числа: 5.7 8

Вывод:

8.0
In [3]:
# решение 1 – с if-else

inp = input("Введите два числа: ")
L = inp.split()
a, b = L  # a = L[0] b = L[1]
x1 = float(a)
x2 = float(b)

if x1 > x2:
    print(x1)
else:
    print(x2)
Введите два числа: 4 6.7
6.7
In [5]:
# решение 2 – без if-else

inp = input("Введите два числа: ")
L = inp.split()
numbers = [float(i) for i in L]
print(max(numbers))
Введите два числа: 6.5 7
7.0

Задача 3

Дан список N из целых чисел. Напишите код, который делает следующее: выводит каждый элемент списка на экран и для каждого элемента либо выводит комментарий "Это чётное число", либо комментарии "Это нечётное число".

Подсказка: оператор для нахождения остатка от деления – это %.

In [6]:
N = [2, 4, 7, 1, 4, 5, 11, 10]

for i in N:
    if i % 2 == 0:
        print(i, "Это чётное число")
    else:
        print(i, "Это нечётное число")
2 Это чётное число
4 Это чётное число
7 Это нечётное число
1 Это нечётное число
4 Это чётное число
5 Это нечётное число
11 Это нечётное число
10 Это чётное число

Задача 4

У питона есть набор любимых чисел.

favorites = [3, 7, 11, 23, 18, 48, 81]

Напишите программу, которая просит пользователя ввести целое число, и если оно нравится питону, на экран будет выводиться сообщение: "Мое любимое число!", если нет ‒ "Эх, ну почему?".

In [7]:
favorites = [3, 7, 11, 23, 18, 48, 81]

n = int(input())
if n in favorites:
    print("Мое любимое число!")
else:
    print("Эх, ну почему?")
11
Мое любимое число!

Задача 5

Напишите программу, которая запрашивает у пользователя пароль, и далее:

  • если пароль верный, выводит на экран сообщение "Login success".
  • если пароль неверный, выводит на экран сообщение "Incorrect password, try again!" до тех пор, пока пользователь не введет верный пароль.
In [8]:
# вариант 1 – классический while

password = "hsepassword"
attempt = input("Enter your password: ")

while attempt != password:
    print("Incorrect password, try again!")
    attempt = input("Enter your password: ")
print("Login success")
Enter your password: hsepa
Incorrect password, try again!
Enter your password: hse
Incorrect password, try again!
Enter your password: hsepassowrd
Incorrect password, try again!
Enter your password: hsepassword
Login success
In [9]:
# вариант 2 – while True

password = "hsepassword"
attempt = input("Enter your password: ")

while True:
    if password == attempt:
        break   
    else:
        print("Incorrect password, try again!")
        attempt = input("Enter your password: ")
print("Login success")
Enter your password: hs
Incorrect password, try again!
Enter your password: hsepassword
Login success