Файл: Методические указания по подготовке к практическим занятиям, в том числе в интерактивной форме, и самостоятельному изучению дисциплины для школьников 911 классов общеобразовательных средних учебных заведений.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.12.2023
Просмотров: 301
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
139
Составить программу, которая по данному числу (1-12) выводит название соответствующего ему месяца на английском языке.
Вариант 10
Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
Вариант 11
Дано три числа. Найти количество положительных чисел среди них;
Вариант 12
Если действительные числа x и y – одного знака, найти их среднее геометрическое, в противном случае найти их среднее арифметическое.
Вариант 13
Определить, существует ли прямоугольный треугольник со сторонами x,y,z. Если – да, вычислить его площадь.
Вариант 14
Определить, существует ли треугольник с длинами сторон a, b, c. Если – да, вычислить его площадь по формуле Герона.
Формула Герона имеет вид:
S=p(p-a)(p-b)(p-c), где p=12(a+b+c)
Вариант 15
Вычислить значение функции f(x), если
140
1 2 3 4 5 6 7 8 9 10
ЧАСТЬ 3 Моделироавание реальных объектов и СОЗДАНИЕ МОБИЛЬНЫХ
ПРИЛОЖЕНИЙ НА ПИТОН
Создание технического задания для исполнителя
ПРОТОТИПИРОВАНИЕ
МОДЕЛИРОВАНИЕ https://pythonru.com/uroki/obuchenie-python-gui-uroki-po-tkinter
Моделирование покупки билета в кинотеатре
Пример 1 Бронирование билета в сисуроку КИНОТЕАТР с использование массивов
1. Заходим на сайт
2. Выбираем места Выбираем свободные места, обозначенные по цвету:свободные-белые, занятые-черные
3. нажать курсор на место,
4. ввести номер карты или номер телефона
5. Подтвердить выбор, введя код, пришедьший на телефон по смс.
Если место занято, то 1, если место свободно, то 0
https://metanit.com/python/tutorial/9.5.php
https://metanit.com/python/tutorial/ https://metanit.com/python/tutorial/
ПРИЛОЖЕНИЙ НА ПИТОН
Создание технического задания для исполнителя
ПРОТОТИПИРОВАНИЕ
МОДЕЛИРОВАНИЕ https://pythonru.com/uroki/obuchenie-python-gui-uroki-po-tkinter
Моделирование покупки билета в кинотеатре
Пример 1 Бронирование билета в сисуроку КИНОТЕАТР с использование массивов
1. Заходим на сайт
2. Выбираем места Выбираем свободные места, обозначенные по цвету:свободные-белые, занятые-черные
3. нажать курсор на место,
4. ввести номер карты или номер телефона
5. Подтвердить выбор, введя код, пришедьший на телефон по смс.
Если место занято, то 1, если место свободно, то 0
https://metanit.com/python/tutorial/9.5.php
https://metanit.com/python/tutorial/ https://metanit.com/python/tutorial/
141
Задание 2 Длина пути если знаем координаты двух точек
Задание Вычислить длину пути, если знаем координаты двух точек
Проектирование:
Таблица 26 Код программы в Python from tkinter import* import math root = Tk() root.title('Table') var = IntVar() var.set(0)
Label(root, text='Точка А').grid(row=1, column=0, sticky=W)
Label(root, text='Точка В').grid(row=2, column=0, sticky=W)
Label(root, text='Длина').grid(row=3, column=0, sticky=W) def dlina(): xa = EntryXA.get() xa = int(xa) ya = EntryYA.get() ya = int(ya) xb = EntryXB.get() xb = int(xb) yb = EntryYB.get() yb = int(yb) result = (str(math.sqrt((xb-xa)*(xb-xa) + (yb-ya)*(yb-ya))))
EntryDLINA.delete(0, END)
EntryDLINA.insert(0, result)
EntryXA = Entry(root, width=8, font='Arial 14')
EntryYA = Entry(root, width=8, font='Arial 14')
EntryXB = Entry(root, width=8, font='Arial 14')
EntryYB = Entry(root, width=8, font='Arial 14')
EntryDLINA = Entry(root, width=8, font='Arial 14')
EntryXA.grid(row=1, column=1, sticky=E)
EntryYA.grid(row=1, column=2, sticky=E)
EntryXB.grid(row=2, column=1, sticky=E)
142
EntryYB.grid(row=2, column=2, sticky=E)
EntryDLINA.grid(row=3, column=1, sticky=E) button1 = Button(root, text='Вычислить', command = dlina) button1.grid(row=3, column=2, sticky=E) root.mainloop()
Результат работы программы import tkinter from tkinter import* root = Tk() btn1 = Button(root) btn1["text"] = 'Привет' btn1["bg"] = 'blue' btn1["fg"] = 'white' btn1.place(x = 50, y = 50) btn2 = Button(root, text='Кнопка 2', bg='blue', fg='white') btn2.place(x = 150, y = 50) root.mainloop()
# импортируем библиотеку tkinter всю сразу from tkinter import * from tkinter import messagebox
# главное окно приложения window = Tk()
# заголовок окна window.title('Авторизация')
# размер окна window.geometry('450x230')
# можно ли изменять размер окна - нет window.resizable(False, False)
# кортежи и словари, содержащие настройки шрифтов и отступов font_header = ('Arial', 15) font_entry = ('Arial', 12) label_font = ('Arial', 11) base_padding = {'padx': 10, 'pady': 8} header_padding = {'padx': 10, 'pady': 12}
# обработчик нажатия на клавишу 'Войти' def clicked():
143
# получаем имя пользователя и пароль username = username_entry.get() password = password_entry.get()
# выводим в диалоговое окно введенные пользователем данные messagebox.showinfo('Заголовок', '{username}, {password}'.format(username=username, password=password))
# заголовок формы: настроены шрифт (font), отцентрирован (justify), добавлены отступы для заголовка
# для всех остальных виджетов настройки делаются также main_label = Label(window, text='Авторизация', font=font_header, justify=CENTER, **header_padding)
# помещаем виджет в окно по принципу один виджет под другим main_label.pack()
# метка для поля ввода имени username_label = Label(window, text='Имя пользователя', font=label_font , **base_padding) username_label.pack()
# поле ввода имени username_entry = Entry(window, bg='#fff', fg='#444', font=font_entry) username_entry.pack()
# метка для поля ввода пароля password_label = Label(window, text='Пароль', font=label_font , **base_padding) password_label.pack()
# поле ввода пароля password_entry = Entry(window, bg='#fff', fg='#444', font=font_entry) password_entry.pack()
# кнопка отправки формы send_btn = Button(window, text='Войти', command=clicked) send_btn.pack(**base_padding)
# запускаем главный цикл окна window.mainloop()
Теперь проясню пару моментов в коде:
1) в коде используется вот такая конструкция **header_padding - это операция
разложения словаря в составляющие переменные. В нашем примере преобразование будет выглядеть следующим образом: **header_padding = {'padx': 10, 'pady': 12} ->
header_padding -> padx=10, pady=12. Т.е. в конструктор класса Label, например, фактически будут передаваться правильные параметры. Это сделано для удобства, чтобы несколько раз не писать одни и теже настройки отступов. 2) у виджетов (Label, Button,
Entry) - есть несколько менеджеров расположения, которые определяют, как дочерний виджет будет располагаться в родительском окне (контейнере). В примере, был использован метод pack(), который, по умолчанию, располагает виджет один под другим.
Таким образом, мы создали кроссплатформенное графическое приложение на Python -
авторизация пользователя, которое может пригодиться на практике, остается добавить логику авторизации в методе clicked.
Создание программ с GUI подробно описывается все компоненты, необходимые для создания Python приложения c графическим интерфейсом.
ПРИЛОЖЕНИЕ СПРАВОЧНИК ВСТРОЕННЫХ ФУНКЦИЙ
Другие встроенные функции
abs(x) - Возвращает абсолютную величину (модуль числа).
144
all(последовательность) - Возвращает True, если все элементы истинные (или, если последовательность пуста).
any(последовательность) - Возвращает True, если хотя бы один элемент - истина. Для пустой последовательности возвращает False.
ascii(object) - Как repr(), возвращает строку, содержащую представление объекта, но заменяет не-ASCII символы на экранированные последовательности.
bin(x) - Преобразование целого числа в двоичную строку.
callable(x) - Возвращает True для объекта, поддерживающего вызов (как функции).
chr(x) - Возвращает односимвольную строку, код символа которой равен x.
classmethod(x) - Представляет указанную функцию методом класса.
compile(source, filename, mode, flags=0, dont_inherit=False) - Компиляция в программный код, который впоследствии может выполниться функцией eval или exec. Строка не должна содержать символов возврата каретки или нулевые байты.
delattr(object, name) - Удаляет атрибут с именем 'name'.
dir([object]) - Список имен объекта, а если объект не указан, список имен в текущей локальной области видимости.
divmod(a, b) - Возвращает частное и остаток от деления a на b.
enumerate(iterable, start=0) - Возвращает итератор, при каждом проходе предоставляющем кортеж из номера и соответствующего члена последовательности.
eval(expression, globals=None, locals=None) - Выполняет строку программного кода.
exec(object[, globals[, locals]]) - Выполняет программный код на Python.
filter(function, iterable) - Возвращает итератор из тех элементов, для которых function возвращает истину.
format(value[,format_spec]) - Форматирование (обычно форматирование строки
).
getattr(object, name ,[default]) - извлекает атрибут объекта или default.
globals() - Словарь глобальных имен.
hasattr(object, name) - Имеет ли объект атрибут с именем 'name'.
hash(x) - Возвращает хеш указанного объекта.
help([object]) - Вызов встроенной справочной системы.
hex(х) - Преобразование целого числа в шестнадцатеричную строку.
id(object) - Возвращает "адрес" объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта в течение срока его существования.
input([prompt]) - Возвращает введенную пользователем строку. Prompt - подсказка пользователю.
isinstance(object, ClassInfo) - Истина, если объект является экземпляром ClassInfo или его подклассом. Если объект не является объектом данного типа, функция всегда возвращает ложь.
issubclass(класс, ClassInfo) - Истина, если класс является подклассом ClassInfo. Класс считается подклассом себя.
iter(x) - Возвращает объект итератора.
len(x) - Возвращает число элементов в указанном объекте.
locals() - Словарь локальных имен.
map(function, iterator) - Итератор, получившийся после применения к каждому элементу последовательности функции function.
max(iter, [args ...] * [, key]) - Максимальный элемент последовательности.
min(iter, [args ...] * [, key]) - Минимальный элемент последовательности.
next(x) - Возвращает следующий элемент итератора.
oct(х) - Преобразование целого числа в восьмеричную строку.
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) - Открывает файл и возвращает соответствующий поток.
ord(с) - Код символа.
pow(x, y[, r]) - ( x ** y ) % r.
145
reversed(object) - Итератор из развернутого объекта.
repr(obj) - Представление объекта.
print([object, ...], *, sep=" ", end='\n', file=sys.stdout) - Печать.
property(fget=None, fset=None, fdel=None, doc=None)
round(X [, N]) - Округление до N знаков после запятой.
setattr(объект, имя, значение) - Устанавливает атрибут объекта.
sorted(iterable[, key][, reverse]) - Отсортированный список.
staticmethod(function) - Статический метод для функции.
sum(iter, start=0) - Сумма членов последовательности.
super([тип [, объект или тип]]) - Доступ к родительскому классу.
type(object) - Возвращает тип объекта.
type(name, bases, dict) - Возвращает новый экземпляр класса name.
vars([object]) - Словарь из атрибутов объекта. По умолчанию - словарь локальных имен.
zip(*iters) - Итератор, возвращающий кортежи, состоящие из соответствующих элементов аргументов-последовательностей.
Time - модуль для работы со временем в Python.
time.altzone - смещение DST часового пояса в секундах к западу от нулевого меридиана.
Если часовой пояс находится восточнее, смещение отрицательно.
time.asctime([t]) - преобразовывает кортеж или struct_time в строку вида "Thu Sep 27 16:42:37 2012". Если аргумент не указан, используется текущее время.
time.clock() - в Unix, возвращает текущее время. В Windows, возвращает время, прошедшее с момента первого вызова данной функции.
time.ctime([сек]) - преобразует время, выраженное в секундах с начала эпохи в строку вида "Thu Sep 27 16:42:37 2012".
time.daylight - не 0, если определено, зимнее время или летнее (DST).
time.gmtime([сек]) - преобразует время, выраженное в секундах с начала эпохи в struct_time, где DST флаг всегда равен нулю.
time.localtime([сек]) - как gmtime, но с DST флагом.
time.mktime(t) - преобразует кортеж или struct_time в число секунд с начала эпохи.
Обратна функции time.localtime.
time.sleep(сек) - приостановить выполнение программы на заданное количество секунд.
time.strftime(формат, [t]) - преобразует кортеж или struct_time в строку по формату:
Формат
Значение
%a
Сокращенное название дня недели
%A
Полное название дня недели
%b
Сокращенное название месяца
%B
Полное название месяца
%c
Дата и время
%d
День месяца [01,31]
%H
Час (24-часовой формат) [00,23]
%I
Час (12-часовой формат) [01,12]
%j
День года [001,366]
%m
Номер месяца [01,12]
%M
Число минут [00,59]
%p
До полудня или после (при 12-часовом формате)
%S
Число секунд [00,61]
%U
Номер недели в году (нулевая неделя начинается с воскресенья) [00,53]
146
Формат
Значение
%w
Номер дня недели [0(Sunday),6]
%W
Номер недели в году (нулевая неделя начинается с понедельника) [00,53]
%x
Дата
%X
Время
%y
Год без века [00,99]
%Y
Год с веком
%Z
Временная зона
%%
Знак '%'
time.strptime(строка [, формат]) - разбор строки, представляющей время в соответствии с форматом. Возвращаемое значение struct_time. Формат по умолчанию: "%a %b %d
%H:%M:%S %Y".
Класс time.struct_time - тип последовательности значения времени. Имеет интерфейс кортежа. Можно обращаться по индексу или по имени.
1. tm_year
2. tm_mon
3. tm_mday
4. tm_hour
5. tm_min
6. tm_sec
7. tm_wday
8. tm_yday
9. tm_isdst
time.time() - время, выраженное в секундах с начала эпохи.
time.timezone - смещение местного часового пояса в секундах к западу от нулевого меридиана. Если часовой пояс находится восточнее, смещение отрицательно.
time.tzname - кортеж из двух строк: первая - имя DST часового пояса, второй - имя местного часового пояса.
147
ПРИЛОЖЕНИЕ 3 Команды черепашки
Сокращенные версии команды turtle.penup()
Подымаем перо
По умолчанию у
Черепашки перо всегда опущено turtle.up() turtle.pendown()
Опускаем перо turtle.pd() turtle.down() turtle.pensize(5)
Рисуем линию толщиной в пять пикселей pensize() или turtle.width() turtle.pencolor('red')
Рисуем линии красным цветом turtle.pencolor(0,255,0)
Рисуем линии зеленым цветом используя RGB палитру turtle.pencolor('#0000ff') Рисуем линии синим цветом используя шестнадцатеричную запись turtle.fillcolor('#0000ff')
Указываем цвет заливки turtle.begin_fill()
Тут записываем команды движения
Черепашки turtle.end_fill() turtle.color('#0000ff',
'red')
Первый аргумент устанавливает цвет линии, а второй цвет заливки
ПРИЛОЖЕНИЕ Ключевые слова
False - ложь.
True - правда.
None - "пустой" объект.
and - логическое И.
with / as - менеджер контекста.
assert условие - возбуждает исключение, если условие ложно.
break - выход из цикла.
class - пользовательский тип, состоящий из методов и атрибутов.
continue - переход на следующую итерацию цикла.
def - определение функции.
del - удаление объекта.
elif - в противном случае, если.
else - см. for/else или if/else.
except - перехватить исключение.
finally - вкупе с инструкцией try, выполняет инструкции независимо от того, было ли исключение или нет.
for - цикл for.
from - импорт нескольких функций из модуля.
148
global - позволяет сделать значение переменной, присвоенное ей внутри функции, доступным и за пределами этой функции.
if - если.
import - импорт модуля.
in - проверка на вхождение.
is - ссылаются ли 2 объекта на одно и то же место в памяти.
lambda - определение анонимной функции.
nonlocal - позволяет сделать значение переменной, присвоенное ей внутри функции, доступным в объемлющей инструкции.
not - логическое НЕ.
or - логическое ИЛИ.
pass - ничего не делающая конструкция.
raise - возбудить исключение.
return - вернуть результат.
try - выполнить инструкции, перехватывая исключения.
while - цикл while.
yield - определение функции-генератора.
ПРИЛОЖЕНИЕ СПРАВОЧНИК КОМАНД МОДУЛЯ СЛУЧАЙНЫХ ЧИСЕЛ
Метод
Описание
seed()
Инициализация генератора случайных чисел getstate()
Возвращает текущее внутренне состояние (state) генератора случайных чисел setstate()
Восстанавливает внутреннее состояние (state) генератора случайных чисел getrandbits()
Возвращает число, которое представляет собой случайные биты randrange()
Возвращает случайное число в пределах заданного промежутка randint()
Возвращает случайное число в пределах заданного промежутка choice()
Возвращает случайный элемент заданной последовательности choices()
Возвращает список со случайной выборкой из заданной последовательности shuffle()
Берет последовательность и возвращает ее в перемешанном состоянии sample()
Возвращает заданную выборку последовательности random()
Возвращает случайное вещественное число в промежутке от 0 до 1 uniform()
Возвращает случайное вещественное число в указанном промежутке triangular()
Возвращает случайное вещественное число в промежутке между двумя заданными параметрами. Также можно использовать параметр mode для уточнения середины между указанными параметрами betavariate()
Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Бета-распределении, которое используется в статистике expovariate()
Возвращает случайное вещественное число в промежутке между 0 и 1, или же между 0 и -1, когда параметр отрицательный. За основу берется
Экспоненциальное распределение, которое используется в статистике