На этом шаге мы рассмотрим решения нескольких задач, в которых используется работа с числами.
Приведем несколько примеров решения задач на действия с числами.
Задание 1. Реализовать игру "Угадай число". Компьютер "загадывает число" от 1 до 100. Задача игрока это число угадать за минимальное число шагов.
Раскрыть/скрыть решение и комментарии.
Прежде всего приведем текст программы и затем прокомментируем его.
# -*- coding: utf-8 -*- import random # Подключаем модуль random print("Игра 'Угадай число'\n") print("Компьютер задумал число от 1 до 100. Твоя задача: угадать это число за меньшее число шагов.\n") print("Каждый раз компьютер будет говорить, больше или меньше указанное тобой число.\n") # Генерация случайного целого числа от 1 до 100 n = random.randint (1, 100) kol = 0 # Количество шагов ch = -1 # Число игрока while n != ch: # Ввод числа игрока ch = int(input("Твое число: ")) kol += 1 # Сравнение задуманного и введенного чисел if n > ch: print("Задуманное число больше\n") elif n < ch: print("Задуманное число меньше\n") else: print("Поздравляю! Ты угадал!") print("Число шагов: ", kol)
Дадим еще несколько комментариев к приведенной программе.
Переменная n содержит сгенерированное случайным образом число; переменная kol - количество шагов, за которое будет угадано число, а ch - введенное число пользователем. Этой переменной сначала задаем такое значение, которое никогда не примет переменная n. Это сделано для того, чтобы можно было "войти" в тело цикла.
Тело цикла будет повторяться до тех пор, пока не обнаружится равенство значений переменных n и ch. В теле цикла запрашивается число игрока и происходит сравнение "задуманного" и введенного чисел с выдачей соответствующих сообщений. Когда числа оказываются равными, то дополнительно выводится количество шагов (попыток).
Результат работы приложения изображен на рисунке 1.
Рис.1. Результат работы приложения
Задание 2. Реализовать небольшой тренажер по проверке знания таблицы умножения.
Раскрыть/скрыть решение и комментарии.
Надеемся, что приведенных комментариев в тексте программы будет достаточно для понимания ее работы.
# -*- coding: utf-8 -*- import random # Подключаем модуль random print("Небольшой тренажер по проверке знания таблицы умножения") # Запрос количества примеров kol_pr = int(input ("Количество примеров: ")) verno = 0 # Количество верных ответов # Цикл по количеству примеров for i in range(1, kol_pr+1): print("Пример №", i) # Генерация множителей c1 = random.randint (1, 10) c2 = random.randint (1, 10) otvet = c1 * c2 # Эталонный ответ print("Сколько будет: ", c1, "умножить на", c2, "?") # Введенный ответ ot1 = int(input("Твой ответ: ")) # Проверка if otvet == ot1: print("Верно! Молодец!") verno += 1 else: print("Ты ошибся") print("Из", kol_pr, "примеров верно решено", verno) input()
Результат работы приложения изображен на рисунке 2.
Рис.2. Результат работы приложения
Задание 3. Вычислить все расстояния между любыми парами точек заданного множества.
Раскрыть/скрыть решение и комментарии.
Приведем сначала текст программы.
# Найти расстояние между двумя точками списка import math tochki = [] # Список точек n = int(input("Количество точек: ")) for i in range(1,n+1): print(i,"-я точка:", sep="") x = int(input("x = ")) y = int(input("y = ")) tochka = [] # Начальное значение списка координат tochka.append(x) # Добавили координату x tochka.append(y) # Добавили координату y tochki.append(tochka) # Добавили точку к списку print("Список координат точек:") print(tochki) print("Количество точек:",len(tochki)) # Циклы для выбора двух точек for i in range(len(tochki)-1): for j in range(i+1, len(tochki)): print("Расстояние между",(i+1),"и", (j+1),"точками =",end=" ") L1 = tochki[i] # i-я точка L2 = tochki[j] # j-я точка x1 = L1[0] # Координаты i-й точки y1 = L1[1] x2 = L2[0] # Координаты j-й точки y2 = L2[1] # Расстояние между точками rasst = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) print(rasst)
Прокомментируем приведенную программу.
Точки будем располагать в списке. Каждая точка - это элемент списка. В свою очередь, точка - это список, состоящий из двух чисел: координаты x и координаты y. Таким образом, tochki - это список точек, в то время, как tochka - список координат текущей точки.
Сначала запрашиваем количество точек (переменная n), после чего в цикле выводим номер текущей точки и запрашиваем ее координаты (переменные x и y). Затем создаем пустой список (tochka = []), в который методом append помещаем координаты текущей точки. После того, как список с координатами текущей точки сформирован, добавляем его к списку точек конструкцией tochki.append(tochka).
В заключение выводим сформированный список координат и количество точек в списке с помощью функции len().
Вторая часть программы начинается с друх циклов, которые используются для получения всех возможных пар точек. Взятые точки помещаются в L1 и L2 (напоминаем, что нумерация элементов списка начинается с 0). Напомним, что переменные L1 и L2 представляют собой списки. Выбираем из них координаты и помещаем в соответствующие переменные (для L1 - это x1 и y1, для L2 - это x2 и y2), после чего, пользуясь функцией sqrt() модуля math, находим расстояние мужду точками (переменная rasst), которое затем выводим на экран.
Результат работы программы изображен на рисунке 3.
Рис.3. Результат работы приложения
В заключение хотелось бы отметить, что для представления массива точек был взят список, а не кортеж по нескольким причинам:
Задание 4. Найти максимальное значение среди заданных целых чисел.
Раскрыть/скрыть решение и комментарии.
Приведем текст программы.
# Найти максимальное значение из списка ch = [] # Список чисел n = int(input("Количество чисел: ")) for i in range(n): x = int(input()) ch.append(x) # Добавили число к списку print("Введенные числа:") print(ch) print("Количество чисел:", len(ch)) print("Максимальное значение =", max(ch))
Результат работы программы изображен на рисунке 4.
Рис.4. Результат работы приложения
Для решения данной задачи был также использован список (смотри решение задания 3). Для нахождения максимального значения использовалась функция max(), в качестве аргумента которой был передан сформированный список чисел.
Со следующего шага мы начнем рассматривать строки.