Начало разработки курсового проекта

This commit is contained in:
2024-01-05 01:14:10 +03:00
parent 33fdd19ff5
commit fd9792aa95
58 changed files with 39 additions and 20 deletions

View File

@@ -0,0 +1,45 @@
Итоговый проект к модулю
Цель:
Написать свою игру “кликер” и воспользоваться AHK для автоматизации действия в игре
Что нужно сделать:
Создать файл kliker.py и реализовать в нем следующие функции:
Вывести начальное количество рублей.
Добавить картинку png при нажатии на которую будет увеличиваться количество рублей.
Добавить счетчик времени который будет считать время с начала запуска программы.
Добавить кнопку “Сброс” которая будет сбрасываться счетчик и таймер времени.
Изменить цвет окна.
Кнопка “Сброс” внизу экрана, картинка для нажатия в центре, счетчик денег вверху, таймер с левой стороны.
Создать файл mouse.ahk и реализовать в нем следующие функции:
Скрипт запускается и останавливается при нажатии на клавишу Numpad1.
Реализовать клик мышки при включении скрипта, мышь будет кликать до повторного нажатия Numpad1.
Результат:
Рабочий кликер с автоматическим нажатием кнопки.
Советы и рекомендации по выполнению дз:
Для выполнения задания, используйте полученные знания и навыки из предыдущих уроков.
Критерии оценивания:
К1 - Проект создан и запускается
К2 - Проект создан и не полностью выполняется хотя бы одна задача из поставленных
К3 - Проект создан и выполняется одна задача из поставленных, без ошибок и сбоев
К4 - Проект создан и выполняется большая часть задач из поставленных, с небольшими ошибкам
К5 - Проект создан и выполняются все задач из поставленных, без сбоев и ошибок

View File

@@ -0,0 +1,182 @@
import os
import time
from pathlib import Path
from subprocess import Popen
from tkinter import (
BOTH,
LEFT,
RAISED,
RIGHT,
TOP,
Button,
Frame,
Label,
PhotoImage,
StringVar,
Tk,
mainloop,
messagebox,
)
class ClickerGame:
"""Перед запуском проверьте и исправьте место установки AHK
Св-во класса AHK_PATH должно содержать полный путь до запускаемого файла,
если приложение установлено не в папки по умолчанию
"""
AHK_PATH = "<Введите сюда путь до приложения AutoHotKey>"
def __init__(self):
# Поиск места установки AutoHotKey
self.is_ahk_path_set = False
if os.path.isfile(
app_exe := os.path.join(
Path.home(),
"AppData",
"Local",
"Programs",
"AutoHotkey",
"UX",
"AutoHotkeyUX.exe",
)
):
self.AHK_PATH = app_exe
self.is_ahk_path_set = True
elif os.path.isfile(
app_exe := os.path.join(
r"c:\\", "Program Files", "AutoHotkey", "UX", "AutoHotkeyUX.exe"
)
):
self.AHK_PATH = app_exe
self.is_ahk_path_set = True
else:
messagebox.showerror(
"Can't find AutoHotKey",
"""Пропишите AHK_PATH До этого, автокликер работать не будет""",
)
self.__root = Tk()
self.__root.geometry("500x400")
self.__root.minsize(500, 400)
self.__root.title("Clicker Game")
self.__root.bind("<Key>", self.key)
self.process = None
self.ahk_flag = False # Флаг запущен ли скрипт кликера
self.frame = Frame(self.__root, relief=RAISED, borderwidth=5, bg="green")
self.frame.pack(fill=BOTH, expand=True, padx=5, pady=5)
self.label = Label(
self.frame, text="Clicker Game", font=("Arial", 25), bg="green"
)
self.label.pack(side=TOP)
self.score = 0
self.message = StringVar()
self.message.set(f"Ваш счет: {self.score}")
self.label2 = Label(
self.frame, textvariable=self.message, font=("Arial", 15), bg="green"
)
self.label2.pack(side=TOP)
self.timer = 0
self.start_time = time.time()
self.timer_message = StringVar()
self.timer_update()
self.label3 = Label(
self.frame, textvariable=self.timer_message, font=("Arial", 12), bg="green"
)
self.label3.pack(side=LEFT)
self.img = PhotoImage(file=os.path.join(os.curdir, "img.png"))
self.clicker = Button(
self.frame, text="clickme", image=self.img, command=self.increment
)
self.clicker.place(relx=0.5, rely=0.5, anchor="center")
self.ahk_button = Button(
self.__root, text="Запустить AHK", command=self.switcher_ahk
)
self.ahk_button.pack(side=LEFT, padx=10, pady=10)
self.close_button = Button(self.__root, text="Выход", command=self.quit)
self.close_button.pack(side=RIGHT, padx=10, pady=10)
self.ahk_button = Button(
self.__root, text="Сброс игры", command=self.clicker_reset
)
self.ahk_button.pack(side=RIGHT, padx=10, pady=10)
mainloop()
def __del__(self):
"""Завершаем поток АНК ели он запущен при
уничтожении игры.
Можно было и в метод quit разместить, но
правильнее добавить деструктор обекта"""
if self.ahk_flag:
self.switcher_ahk()
def key(self, event):
"""Отлавливаем все event в игре, в т.ч и
нажатия клавиш клавиатуры. Обрабатываем
интересующие нас"""
if event.keycode == 97:
# Переключаем статус АНК по numpad1
self.switcher_ahk()
if event.keycode == 73 or event.keycode == 17:
# Инкремент счетчика по хот кею Ctrl-i или Ctrl-ш в RU раскладке
self.increment()
def increment(self, keys=None):
if keys is not None:
"""Данный блок необходим, чтоб среда не ругалась на неиспользуемый
аргумент keys. При связывании горячей клавиши методом bind, сюда
передается инфо о нажатой комбинации. Тут она мне не нужна, поэтому
ставим тупо заглушку"""
pass
self.score += 1
self.message.set(f"Ваш счет: {self.score}")
def switcher_ahk(self):
"""Переключаем состояние кликера(вкл/выкл),
если путь к нему установлен или выводим
сообщение с предупреждением"""
if not self.is_ahk_path_set:
messagebox.showerror(
"Can't find AutoHotKey",
"""Не могу запустить автокликер. Не указан путь к AutoHotKey""",
)
elif self.ahk_flag:
self.ahk_flag = False
self.process.kill()
else:
self.ahk_flag = True
self.process = Popen([self.AHK_PATH, "clicker.ahk"])
def timer_update(self):
self.timer = int(time.time() - self.start_time)
self.timer_message.set(
f"Время игры:\n{self.timer // 60}мин. {self.timer % 60} сек."
)
self.__root.after(1000, self.timer_update)
def clicker_reset(self):
if self.ahk_flag:
self.switcher_ahk()
self.score = 0
self.message.set(f"Ваш счет: {self.score}")
self.timer = 0
self.start_time = time.time()
self.timer_update()
def quit(self):
self.__root.destroy()
if __name__ == "__main__":
game = ClickerGame()

View File

@@ -0,0 +1,10 @@
#Requires AutoHotkey v2.0
SetTimer Click, 200
Click()
{
if WinExist("Clicker Game")
WinActivate ;
Send "^i"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,35 @@
В качестве ДЗ предоставлена задача:
1. Создайте новый файл с расширением ".py" и назовите его "my_first_program".
2. Напишите программу, которая выводит на экран приветствие и Ваше ФИО.
3. Используйте F- строки для вывода информации.
4. Добавьте комментарии в коде объясняющие ход работы программы.
5. Выведите несколько человек.
6. Добавьте город проживания.
Критерии оценки:
1 балл - программа называется неправильно,
вся информация выведена через print,
без использования переменных и F-строк и комментариев.
2 балла - Программа называется как в задании,
вся информация выведена через print,
без использования переменных и F-строк.
3 балла - Программа называется как в задании,
созданы переменные имени и возраста,
переменные вставлены в вывод но без использования F-строк.
4 балла - Программа называется как в задании,
созданы переменные имени и возраста,
переменные вставлены в вывод с использованием F-строк.
5 баллов - Программа называется как в задании, созданы переменные имени и возраста, переменные вставлены в вывод с использованием F-строк.
Добавлены однострочные комментарии объясняющие работу кода.
Код оформлен красиво и четко.
Решение задачи оформлено в файле my_first_program.py

View File

@@ -0,0 +1,27 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме
"Введение в особенности программирования на языке Python"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c
:license: MIT
2023г.
"""
my_name = "Сергей Николаевич" # Создаем переменную
my_age = 39 # еще какой-то бесполезный коментарий
my_city = "Нарьян-Мар"
# Отделим строки кода пустыми строками для удобства чтения кода.
his_name, his_age, his_city = "Васек 35 Зачаханск".split()
her_name, her_age, her_city = "Сонька", 18, "Золоторуческ"
# как бы печатаем строчки
print(f"Здрасте), Меня зовут {my_name}. Мне {my_age}лет")
print(f"Я живу в {my_city}е\n")
print(f"Bonjour, je m'appelle {his_name}.", end=" ")
print(f"Je traîne à {his_city} depuis {his_age} ans\n")
print(f"Менің атым {her_name}, мен {her_age} жастамын. Мен {her_city}іде тұрамын")

View File

@@ -0,0 +1,66 @@
Задание:
Написать приложение пайтон, используя библиотеку Tkinter, которое будет выводить одно из рандомных определений из пайтона. К примеру (While - это ... ) и т.д. Сделайте дизайн приложения (к примеру- сделайте заголовок внутри окна). Измените цвет окна.
Давайте разберем его по шагам:
Импорт библиотек.
В этом блоке импортируются библиотеки. tkinter используется для создания GUI-приложения, а random используется для выбора случайных определений.
Определения Python:
definitions = {
"While": "Цикл 'while' используется для выполнения блока кода, пока условие истинно.",
"For": "Цикл 'for' используется для итерации по элементам последовательности (например, списку или строке).",
"If": "Условие 'if' позволяет выполнить определенный блок кода, если условие истинно.",
"Function": "Функция - это блок кода, который можно вызывать с определенными аргументами.",
"List": "Список - это упорядоченная коллекция элементов, которая может содержать разные типы данных."
}
Функция show_random_definition():
Эта функция выбирает случайный ключ из словаря definitions, затем очищает текстовое поле definition_text и вставляет в него выбранное определение.
Создание главного окна:
Этот блок создает главное окно приложения с заголовком "Определения Python".
Изменим цвет фона окна на бирюзовый
root.configure(bg="#00FFFF")
Создание заголовка.
Title label - в котором указывает заголовок окна.
Создание текстового поля для определений:
Это текстовое поле, в котором будут отображаться определения.
Создание кнопки "Показать определение":
Создается кнопка с названием "Показать определение", и ей назначается функция show_random_definition() для выполнения при нажатии на кнопку.
Запуск главного цикла приложения:
Этот код запускает главный цикл приложения, который ожидает взаимодействия пользователя с GUI.
Когда пользователь нажимает кнопку "Показать определение", случайное определение из словаря definitions отображается в текстовом поле при помощи функции show_random_definition().

View File

@@ -0,0 +1,65 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "tkinter num2"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
from tkinter import *
class PyZen:
def __init__(self):
self.__root = Tk()
self.__root.title = "Определения Python"
self.__root.configure(bg="#00FFFF")
self.gen_zen()
self.label = Label(self.__root, text="Дзен Python")
self.text = Text(self.__root, wrap=WORD)
self.set_text()
self.btn_get = Button(
self.__root, text="Получить мудрость старейшин", command=self.get_shit
)
self.btn_exit = Button(self.__root, text="Выйти", command=self.exit)
self.label.pack(padx=20, pady=20)
self.text.pack(padx=20, pady=20)
self.btn_get.pack()
self.btn_exit.pack()
mainloop()
def gen_zen(self):
import contextlib
import io
with contextlib.redirect_stdout(echo := io.StringIO()):
import this
self.zen = (echo.getvalue()).split("\n")
def set_text(self, text=None):
self.text.delete("1.0", END)
if text is None:
self.text.insert("1.0", "Познаватель Дзена\n")
self.text.insert("2.0", "Нажмите кнопку и получите мудрость")
else:
self.text.insert("1.0", "Мудрость дня:\n")
self.text.insert("2.0", "\n")
self.text.insert("3.0", text + "\n\n")
self.text.insert("5.0", "\u00a9" + self.zen[0])
def get_shit(self):
import random
self.set_text(random.choice(self.zen[2:-1]))
def exit(self):
self.__root.destroy()
app = PyZen()

View File

@@ -0,0 +1,11 @@
Дз 2. Знакомство с переменными и базовыми функциями
Создайте программу-калькулятор, которая будет выполнять простые математические операции: сложение, вычитание. Программа должна предложить пользователю выбрать операцию, затем ввести два числа и вывести результат операции.
Шаги:
Поприветствуйте пользователя и покажите список доступных операций: "+", "-"
Попросите пользователя выбрать операцию, введя соответствующий символ.
Затем попросите пользователя ввести первое число.
Затем попросите пользователя ввести второе число.
Выполните выбранную операцию над введенными числами.
Выведите результат пользователю.
Добавьте умножение.
Добавьте деление.

View File

@@ -0,0 +1,79 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме
"Знакомство с переменными и базовые функции"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
from decimal import Decimal, DecimalException, DivisionByZero
MATH_SYMBOLS = ("+", "-", "*", "/")
def get_num_from_str(string: str) -> int | Decimal | None:
"""Функция валидации и преобразования строки в число.
Проверяет коректность строки и определяет тип
для преобразования строки в числовой тип.
Параметры:
<string> - Число в строковом представлении
Возвращаемые значения:
- num: int Вернет число типа int, если строка может быть
преобразована в целое число
- num: Decimal Если в строке есть точка или запятая
- None Если строку нельзя преобразовать в число
"""
string = string.replace(",", ".")
try:
num = int(string)
return num
except ValueError:
pass
try:
num = Decimal(string)
return num
except DecimalException:
pass
return
print("Привет, Пользователь. Это простой калькулятор")
print("Вам доступны операции: ", *MATH_SYMBOLS)
symbol = input("Введите операцию: ")
while symbol not in MATH_SYMBOLS:
symbol = input("Ошибка, введите коректную операцию: ")
while True:
num1 = get_num_from_str(input("Введите первое число:\n"))
if num1 is not None:
break
print("Ошибка ввода!\n")
while True:
num2 = get_num_from_str(input("Введите второе число:\n"))
if num2 is not None:
break
print("Ошибка ввода!\n")
match symbol:
case "+":
print("Сумма равна:", num1 + num2)
case "-":
print("Разница равна:", num1 - num2)
case "*":
print("Произведение равно:", num1 * num2)
case "/":
try:
print("Частное равно", num1 / num2)
except (DivisionByZero, ZeroDivisionError):
print("Are you crazy, dumbass?\nDivision by Zero, E_P_T")

View File

@@ -0,0 +1,6 @@
Напишите программу для кинотеатра.
Пользователь вводит возраст, город, имя и
наличие сопровождающего.
Если возраст меньше 12 лет, программа выводит "Билет бесплатный".
Если возраст от 12 до 18 лет и есть сопровождающий, программа выводит "Билет со скидкой".
Во всех остальных случаях программа выводит "Полная стоимость билета".

View File

@@ -0,0 +1,101 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме
"Логические и условные операторы"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
import os
def cls():
os.system("cls" if os.name == "nt" else "clear")
def get_ticket(**kwargs) -> str:
rates = {
0: "Полная стоимость билета",
1: "Билет со скидкой",
2: "Бесплатный билет",
}
rate = 0
if kwargs.get("age") in range(0, 12):
rate = 2
elif kwargs.get("age") in range(12, 18) and kwargs.get("escort", False):
rate = 1
return rates.get(rate, "Error")
def add_buyer():
cls()
print("#" * 25)
print("#".ljust(23), "#")
print("#", "\033[32m{}\033[0m ".format("Купить билет в кино").center(21), "#")
print("#".ljust(23), "#")
print("#" * 25)
name = input("Ваше имя?: ")
city = input("Ваш город?: ")
try:
age = int(input("Сколько вам полных лет?: "))
if age not in range(0, 150):
raise ValueError
except ValueError:
print("Введен некорректный возраст. ")
age = -1
if age <= 12:
escort = True
elif age < 18:
escort = (
True
if input("Вы с сопровождающим? (Да/Нет): ") in ("д", "Д", "Да", "да")
else False
)
else:
escort = False
cls()
print("#" * 30)
for i in range(11):
if i in (1, 3, 5, 7, 9):
print("#".ljust(28), "#")
if i == 0:
print("#", "Билет".center(26), "#")
if i == 2:
print("#", name.ljust(26), "#")
if i == 4:
print("#", city.ljust(26), "#")
if i == 6:
print("#", ("Возраст: " + str(age)).ljust(26), "#")
if i == 8:
print(
"#",
("С сопровождающим" if escort else "Без сопровождения").ljust(26),
"#",
)
if i == 10:
print(
"#",
get_ticket(name=name, city=city, age=age, escort=escort).center(26),
"#",
)
print("#" * 30)
add_buyer()
while True:
if input("Купить еще билет? (Да/Нет): ") in ("д", "Д", "Да", "да"):
add_buyer()
else:
break

View File

@@ -0,0 +1,12 @@
Напишите программу, которая запрашивает у пользователя его возраст
и выводит сообщение "Вы совершеннолетний(я)" или "Вы несовершеннолетний(я)",
в зависимости от значения возраста (18 и больше - совершеннолетие).
Напишите программу, которая запрашивает у пользователя два числа и
выводит сообщение "Первое число больше второго", "Второе число больше первого"
или "Оба числа равны", в зависимости от значений введенных чисел.
Напишите программу, которая запрашивает у пользователя его имя
и выводит сообщение "Привет, [имя]!", если пользователь ввел имя,
или сообщение "Вы не ввели имя.", если пользователь не ввел имя.

View File

@@ -0,0 +1,29 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме
"Знакомство с условными конструкциями"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
# 1. Давайте не буду обрабатывать исключения с некорректными
# введенными данными, а просто сделаю так и не буду усложнять:
print(
"Вы {}совершеннолетний".format(
"не" if int(input("Ваш возраст: ")) in range(0, 18) else ""
)
)
# 2. Вывод немного не по тз, но проще(по моему)
num1, num2 = map(int, input("Введите два числа через пробел: ").split())
if num1 == num2:
print("Оба числа равны")
else:
print("Первое число {} второго".format("больше" if num1 > num2 else "меньше"))
# 3.
name = input("Введите ваше имя: ")
print(f"Привет, {name}!" if name else "Вы не ввели имя🤨!")

View File

@@ -0,0 +1,26 @@
Задание 1: Работа с списками и срезами
Создайте список из 10 элементов с разными типами данных
(строки, числа и булевы значения) и выведите его на экран.
Используя срезы, выведите на экран первые 5 элементов списка,
последние 3 элемента списка и каждый второй элемент списка.
Измените 3 элемент списка на новое значение и выведите
измененный список на экран.
Задание 2: Работа с условиями и циклами
Напишите программу, которая запрашивает у пользователя число.
Проверьте, является ли это число четным или нечетным, и
выведите соответствующее сообщение.
Попросите пользователя ввести число с клавиатуры.
Если число делится на 3 без остатка, выведите сообщение
"Число делится на 3".
Если число больше 10, выведите сообщение "Число больше 10".
Если число не удовлетворяет ни одному из условий,
выведите сообщение "Число не соответствует условиям".

View File

@@ -0,0 +1,65 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "Списки"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
print("ЧАСТЬ 1")
some_list = [
"abcd",
True,
42,
"абвг",
False,
(1, 2, "Ноль"),
"какое то слово",
{1, 4, 6},
{"a": None, "b": "Не None а str"},
"не знаю что писать, пусть будет строка)",
]
print(" список ".center(30, "#"))
print("Печатаю созданный список поэлементно:")
for el in some_list:
print(el, "тип: ", type(el))
print()
print(" срезы ".center(30, "#"))
print("первые 5: ")
print(some_list[:5])
print("последние 3:")
print(some_list[-3:])
print("каждый 2ой:")
print(some_list[1::2])
print()
print(" замена 3го ".center(30, "#"))
some_list[2] = "Заменен"
print(*some_list, sep="\n")
print()
print("ЧАСТЬ 2")
print(" числа ".center(30, "#"))
print(
"Четное"
if int(input("Проверка четности\nВведите число: ")) % 2 == 0
else "нечетное"
)
print()
num = int(input("Проверка по условию\nВведите число:"))
flag = True
if num % 3 == 0:
print("Делиться на 3")
flag = False
if num > 10:
print("Больше 10")
flag = False
if flag:
print("Число не соответствует условиям")

View File

@@ -0,0 +1,9 @@
Задание. Код с использованием for:
Программа запрашивает у пользователя некоторое целое число, после чего использует цикл for, чтобы вывести на экран все числа от 0 до введенного числа включительно. Функция range(n + 1) возвращает последовательность чисел от 0 до n включительно. Значение i поочередно принимает каждое из чисел этой последовательности, и для каждого из них выполняется команда print(i).
2 Задание. Код с использованием while:
Программа делает то же самое, что и предыдущая, но использует цикл while вместо цикла for. Переменная i инициализируется значением 0, а затем на каждой итерации цикла проверяется условие i <= n. Если оно выполнено, то на экран выводится текущее значение переменной i, после чего значение i увеличивается на 1. Цикл продолжается, пока i не станет больше n.

View File

@@ -0,0 +1,44 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "Циклы"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
num = input("Введите число: ")
try:
num = int(num)
except ValueError:
print("Sorry, только целые числа принимаем")
exit()
if num == 0:
print("Ввели 0, циклу некуда шагать...")
else:
step = -1 if num < 0 else 1
skip = False
print('Генерация с помощью "for"')
for i in range(0, num + step, step):
if abs(i) < 3 or abs(i) > abs(num + step) - 4:
print(i)
else:
if not skip:
skip = True
print("Пропускаю строки")
print()
print("Генерация с помощью while")
idx = 0
skip = False
while abs(idx) <= abs(num):
if abs(idx) < 3 or abs(idx) > abs(num + step) - 4:
print(idx)
else:
if not skip:
skip = True
print("Пропускаю строки")
idx += step

View File

@@ -0,0 +1,36 @@
Задание 1: Операции с кортежами
Условие: Создайте кортеж, содержащий три целых числа. Выведите на экран каждое число, а затем выведите их сумму.
Пример вывода:
Кортеж: (2, 4, 6)
Первое число: 2
Второе число: 4
Третье число: 6
Сумма: 12
Задание 2: Работа со списками и множествами
Условие: Вводятся два списка чисел, числа вводятся вручную. Выведите, сколько чисел содержится одновременно как в первом списке, так и во втором.
Пример вывода:
Введите первый список: 1 2 6 7
Введите второй список: 2 7 5 9
Количество пересечений: 2

View File

@@ -0,0 +1,27 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "Структуры данных"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
from random import randint as r
some_tuple = tuple(r(1, 10) for _ in range(3))
print("Кортеж:", some_tuple)
for i in range(len(some_tuple)):
print(f"{i + 1}ый элемент:", some_tuple[i])
print("Сумма: ", sum(some_tuple))
print()
first_list = list(r(1, 10) for _ in range(5))
second_list = list(r(1, 10) for _ in range(5))
print("Сгенерированные списки:")
print(first_list, second_list, sep="\n")
print("Количество пересечений: ", len(set(first_list) & set(second_list)))

View File

@@ -0,0 +1,25 @@
Задание: Создание словаря и операции с ним
Создайте пустой словарь с именем my_dict.
Добавьте в словарь my_dict следующие элементы:
Ключ "name" с соответствующим значением "John".
Ключ "age" с соответствующим значением 25.
Ключ "city" с соответствующим значением "New York".
Выведите на экран содержимое словаря my_dict.
Измените возраст в словаре my_dict на 26.
Добавьте ключ "email" со значением "john@example.com" в словарь my_dict.
Проверьте, есть ли ключ "country" в словаре my_dict, и выведите соответствующее сообщение.
Удалите ключ "city" из словаря my_dict.
Выведите на экран все ключи и значения из словаря my_dict в следующем формате:

View File

@@ -0,0 +1,20 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "Словари и функции"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
my_dict = {"name": "John", "age": 25, "city": "New York"}
print(my_dict)
my_dict["age"] = 26
my_dict["email"] = "john@example.com"
print(my_dict.get("country", "Нет в словаре ключа 'country'"))
my_dict.pop("city")
for k, v in my_dict.items():
print("ключ:", k, "значение:", v)

View File

@@ -0,0 +1,24 @@
Задание:
Импортируйте библиотеку Tkinter в вашем Python-скрипте.
Создайте основное окно приложения.
Добавьте виджет Entry (поле для ввода текста) в основное окно.
Создайте кнопку (Button), которая будет запускать функцию при нажатии.
Создайте функцию, которая будет вызываться при нажатии кнопки и будет отображать введенный пользователем текст в новом окне или под полем для ввода.
Добавьте кнопку которая будет очищать поле ввода.
Добавьте проверку, чтобы при попытке запустить с пустым полем выводилось сообщение что поле пустое.

View File

@@ -0,0 +1,55 @@
"""
Модуль является результатом выполнения практической
домашней работы по теме "tkinter"
:copyright: Сергей Ванюшкин <pi3c@yandex.ru>
:git: https://git.pi3c.ru/pi3c/StudyRepo_Synergy.git
:license: MIT
2023г.
"""
from tkinter import *
class MyApp:
def __init__(self):
self.__root = Tk()
self.label_text = StringVar()
self.update_label("Введите текст")
self.label = Label(self.__root, textvariable=self.label_text)
self.entry = Entry(self.__root)
self.btn_act = Button(
self.__root, text="Выполнить команду свыше", command=self.btn_act_click
)
self.btn_clear = Button(
self.__root, text="Очистить", command=self.btn_clear_click
)
self.btn_exit = Button(self.__root, text="Выход", command=self.btn_exit_click)
self.label.pack(padx=15, pady=15)
self.entry.pack(fill=X, padx=15, pady=15)
self.btn_act.pack(padx=15, pady=15)
self.btn_clear.pack(padx=15, pady=15)
self.btn_exit.pack(padx=15, pady=15)
mainloop()
def update_label(self, text):
self.label_text.set(text)
def btn_act_click(self):
text = self.entry.get()
if text:
self.update_label(f"Вы ввели: {text}")
else:
self.update_label("Вы ни чего не ввели")
def btn_clear_click(self):
self.update_label("Введите что-нибудь еще")
self.entry.delete(0, END)
def btn_exit_click(self):
self.__root.destroy()
app = MyApp()