неділю, 28 листопада 2021 р.

29.11.2021-05.12.2021 Виникаючі допоміжні вікна мовою програмування Python3

 

29.11.2021-05.12.2021

 

Тема:Виникаючі допоміжні вікна мовою програмування Python3

 

Теоретична частина

 

Кодування виникаючих вікон

 

# для версії python 2.7 і нище

from Tkinter import *

 

# для версії python 3.0 і вище

from tkinter import *

Tk (Головне вікно)

from tkinter import *

назва_вікна = Tk()

назва_вікна.mainloop()

назва_вікна['властивість']='значення'

 

Зразок реалізації:

print('Алгоритм 1 створення трьох різних вікон з текстом та його властивостями ')

from  tkinter import*

import tkinter.messagebox

vikno1=tkinter.Tk()

vikno1.title("Вікно №1")

vikno1.config(bg="violet", width=300, height=150, relief=RAISED, bd=9)

vikno1.geometry("500x300+20+10")

label1=tkinter.Label(vikno1, text="Тут буде перший розділ", width=30, height=5, bg="indigo", fg="orange",font="Tahoma, 18", justify="center")

label1.pack()

vikno2=tkinter.Tk()

vikno2.title("Вікно №2")

vikno2.config(bg="pink", width=600, height=200, relief=GROOVE, bd=12)

vikno2.geometry("600x400+600+50")

label2=tkinter.Label(vikno2, text="Тут буде другий розділ", width=30, height=9, bg="silver", fg="yellow",font="Arial, 14", justify="right")

label2.pack()

vikno3=tkinter.Tk()

vikno3.title("Вікно №3")

vikno3.config(bg="purple", width=200, height=150, relief=RIDGE, bd=15)

vikno3.geometry("380x250+50+390")

label3=tkinter.Label(vikno3, text="Тут буде третій розділ", width=20, height=10, bg="green", fg="gold",font="Calibri, 14", justify="left")

label3.pack()

vikno3.mainloop()

vikno2.mainloop()

vikno1.mainloop()

 

·        bg - Колір фону вікна.

(white, black, red, green, blue, cyan, yellow, magenta … і кольори #rrggbb (від 0 до f)

·        bd - Ширина межі в пікселях;

·        relief - Рельєф межі.

(flat, groove, raised, ridge, solid, sunken)

·        cursor - Курсор, який з’являється, коли миша знаходиться у цьому вікні.

(arrow, circle, clock, cross, dotbox, exchange, fleur, heart, man, mouse, pirate, plus, shuttle, sizing, spider, spraycan, star, target, tcross, trek, watch)

·        width - Бажана ширина вікна.

·        height - Висота вікна.


Методи (функції) вікна (не всі - їх є багато)

 

назва_вікна.метод('значення')

 

 

·        title - заголовок вікна

window.title("завдання 1")   # назвати вікно - завдання 1

 

·        minsize і maxsize - мінімальний / максимальний розмір вікна. Методи приймають два аргументи - ширина і висота вікна. Якщо не вказано жодних аргументів - повертають поточне значення.

window.minsize("мінімальна_ширина","мінімальна_довжина")

window.maxsize("максимальна_ширина","максимальна_довжина")

 

·        resizable - чи може користувач змінювати розмір вікна. Приймає два аргументи - можливість зміни розміру по горизонталі і по вертикалі. Без аргументів повертає поточне значення.

window.resizable(False, True)     # забороняє розтягувати по ширині

                                 # але дозволяє по висоті

 

·        geometry - встановлює геометрію вікна в форматі

ширина x висота + відступ_зліва(х) + відступ_зверху(y)

window.geometry("600x400+40+80")  # помістити вікно в точку з

# координатами 40,80

# і встановити розмір в 600 на 400

Розмір або координати можуть бути опущені

window.geometry("600x400")   # тільки змінити розмір

 

window.geometry("+40+80")    # тільки перемістити вікно

Button (Кнопка)

Button (Кнопка) використовується для відображення кнопок у вашій програмі.

 

назва_кнопки = Button(назва_вікна,властивість="значення",...)

 

Властивості(не всі):

·        text - який текст буде відображений на кнопці (в прикладі - ок)

·        height, width - відповідно, довжина і ширина. Ширина мітки в символах (не пікселів!). Якщо ця опція не встановлена, мітка буде розміром відповідно до її вмісту.

·        bg - колір кнопки; fg - колір тексту на кнопці;

·        font - шрифт і його розмір (в прикладі - arial, розмір - 14)

·        activebackground - встановлення кольору фону, коли кнопка знаходиться під курсором.

·        activeforeground - встановлення кольору переднього плану, коли кнопка знаходиться під курсором.

·        command - для виклику функції.

·        image - встановлення зображення на кнопці.

·        state - Встановіть цей параметр на DISABLED, щоб кнопка сіра була відтінками та не відреагувала. Має значення ACTIVE, коли миша над ним. За замовчуванням - NORMAL.

Зразок реалізації

print('Алгоритм 5 налаштування кнопки у вікні з годинником')

import tkinter

import time

from  tkinter import*

from tkinter import Tk, BOTH

from tkinter.ttk import Frame, Button, Style

def  button_clicked():

    button['text']=time.strftime('%H:%M:%S')

window=Tk()

button1=tkinter.Button(window, text="Кнопка 1", 

                    width=15, height=1, bg="yellow", fg="black",

                    font="Times, 12", justify="center", padx=1, pady=1) # створення кнопки

button1.config(bg="pink", width=10, height=1, relief=RIDGE, bd=5)

button1.configure(text=time.strftime('%H:%M:%S'), command=button_clicked)

button1.pack() #реалізація кнопки у вікні

window.mainloop()



Messagebox (Вікно повідомлення)

messagebox (Вікно повідомлення) використовується для відображення вікон повідомлень у ваших програмах.

 

from tkinter import messagebox

 

messagebox.showinfo("Заголовок вікна""Текст всередині вікна")

 

 

Tkinter включає кілька інших вікон повідомлень:

·        showerror()

·        showwarning()

·        showinfo()

 

Label - це віджет, призначений для відображення будь-які написи без можливості редагування користувачем.

 

назва_напису = Label(назва_вікна,властивість="значення",...)

 

 

Entry (Поле вводу) використовується для відображення однорядкового текстового поля для прийому значень від користувача.

 

назва_введення = Entry(назва_вікна,властивість="значення",...)

Зразок реалізації

 from  tkinter import*

from tkinter import messagebox

import tkinter.messagebox

w1=tkinter.messagebox.showinfo("Повідомлення", "Закрийте усі вікна і перезавантажте компютер"); 

w2=tkinter.messagebox.showerror("Помилка!!!", "Невірно вказаний час");

w3=tkinter.messagebox.showwarning("Будьте обережні!!!", "Ваш компютер атакують хакери"); 

w4=tkinter.Tk()

w4.title("Попередження №1")

w4.config(bg="violet", width=300, height=150, relief=RAISED, bd=9)

w4.geometry("800x100+20+10")

new1=tkinter.Label(w4,text="Щойно Ваш компьютер атакували віруси типу Troyan",

              bg="pink", width=100, height=1, relief=RIDGE, bd=5,

              fg="black",font="Tahoma, 18", justify="center");new1.pack()

new2=tkinter.Label(w4,text="Застосуйте покращений захист операційної системи",

              bg="pink", width=100, height=1, relief=RIDGE, bd=5,

              fg="red",font="Tahoma, 18", justify="center"); new2.pack()

w4.mainloop()



Методи (функції) поля введення (не всі - їх є багато)

·          delete(firstlast=None) Видаляє символи з віджета, починаючи з першого в індексі, аж до останнього символу в останньому місці. Якщо другий аргумент опущений, видаляється лише один символ у позиції.

·          get() Повертає поточний текст запису у вигляді рядка.

·          insert ( indexs ) Вставляє рядок s перед символом у заданому індексі.

 

Text - це віджет, який дозволяє користувачеві ввести будь-яку кількість тексту. Має додаткове властивість wrap, що відповідає за перенесення (щоб, наприклад, переносити за словами, потрібно використовувати значення WORD).

 

назва_поля = Text(назва_вікна, властивість="значення",...)

 

Методи insertdelete і get додають, видаляють або витягають текcт. Перший аргумент - місце вставки у вигляді 'x.y', де x - це рядок, а y - стовпець. наприклад:

 

text1.insert(1.0, 'Додати Текст \n в початок першого рядка')

text1.get('1.0', END)        # Витягти все

text1.delete( '1.0', END)    # Видалити все

 

Checkbutton - це віджет, який дозволяє відзначити "галочкою" певний пункт у вікні. При використанні декількох пунктів потрібно кожному привласнити свою змінну.

назва_змінної = IntVar()

назва_прапорця = Checkbutton(назва_вікна, text="значення",

variable= назва_змінної,

onvalue = 1,

offvalue = 0)

Віджет Radiobutton виконує функцію, схожу з функцією віджета Checkbutton. Різниця в тому, що в міні-програмі Radiobutton користувач може вибрати лише один з пунктів. Реалізація цього віджета дещо інша, ніж віджета Checkbutton.

назва_змінної = IntVar()

назва_ перемикача1= Radiobutton(назва_вікна, text="значення1",

variable= назва_змінної, value = 1)

назва_ перемикача1= Radiobutton(назва_вікна, text="значення2",

variable= назва_змінної, value = 2)

 

Canvas (Полотно) використовується для малювання фігур, таких як лінії, овали, багатокутники та прямокутники у вашій програмі.

Властивості(не всі):

 bdbgcursorwidthheight

Віджет Canvas може підтримувати наступні стандартні елементи:

arc - Створює дуговий елемент, який може бути акордним, підвіскою або простою дугою.

coord = 10, 50, 240, 210

arc = canvas.create_arc(coord, start=0, extent=150, fill="blue")

 

image - створює елемент зображення, який може бути екземпляром або BitmapImage, або класів PhotoImage.

filename = PhotoImage(file = "sunshine.gif")

image = canvas.create_image(50, 50, anchor=NE, image=filename)

 

line - Створення рядка-позиції.

line = canvas.create_line(x0, y0, x1, y1, ..., xn, yn, options)

 

rectangle - Створення прямокутника.

rectangle = canvas.create_rectangle(50, 25, 150, 75, fill="blue")

oval - Створює коло або еліпс у заданих координатах. Вона займає дві пари координат; верхній лівий і нижній правий кути обмежувального прямокутника для овалу.

oval = canvas.create_oval(x0, y0, x1, y1, options)

polygon - Створює елемент багатокутника, який повинен мати принаймні три вершини.

polygon = canvas.create_polygon(x0, y0, x1, y1,...xn, yn, options)

 

У Tkinter є три пакувальника: packplacegrid.

·     pack ()

 

·        side ("left" / "right" / "top" / "bottom") - до якої сторони повинен примикати розміщується віджет.

·        fill (None / "x" / "y" / "both") - необхідно розширювати простір надається віджету.

·        expand (True / False) - чи потрібно розширювати сам віджет, щоб він зайняв все надане йому простір.

 

button1.pack(side='left')

button2.pack(side='top')

 

·   grid ()

Цей пакувальник є таблицею з осередками, в які поміщаються віджети.

Аргументи

·          row - номер рядка, в який поміщаємо віджет.

·          rowspan - скільки рядків займає віджет

·          column - номер стовпця, в який поміщаємо віджет.

·          columnspan - скільки стовпців займає віджет.

 

 

entry1.grid(row=0,column=0,columnspan=3)

button1.grid(row=1,column=0)

button2.grid(row=1,column=1)

button3.grid(row=1,column=2)

 

·        place ()

 

button1.place(x=0,y=0)

 

Аргументи

 

·        anchor ( "n", "s", "e", "w", "ne", "nw", "se", "sw" або "center")

який кут або сторона розміщується віджета буде вказана 

в аргументах x / y / relx / rely. За замовчуванням "nw" - лівий верхній

·        bordermode ( "inside", "outside", "ignore") - визначає в якій мірі в

раховуватимуться кордону при розміщенні віджета.

·        in_ - явне вказівку в якій батьківський віджет повинен бути поміщений.

·        x і y - абсолютні координати (в пікселях) розміщення віджета.

·        width і height - абсолютні ширина і висота віджету.

·        relx і rely - відносні координати (від 0.0 до 1.0) розміщення віджета.

·        relwidth і relheight - відносні ширина і висота віджету.

 

В Python обробником подій є функція.

 

 

def func_one():

 print('Привіт, школа!')

 

func_one()

 

button = Button(command = callback)

 

widget.bind("z", callback)

 

widget.bind("z", callback)

 

Cписок модифікаторів

 


Return - Enter

Escape - Esc

Control - Ctrl

Alt

Shift

Lock

Extended

Prior - PgUp

Next - PgDown

Button1, B1 - натиснута перша (ліва) кнопка миші

Button2, B2 - друга (середня) кнопка миші

Button3, B3 - третя (права)

Button4, B4 - четверта

Button5, B5 - п'ята

Mod1, M1, Command

Mod2, M2, Option

Mod3, M3

Mod4, M4

Mod5, M5

Meta, M

Double - подвійне клацання миші (наприклад, <Double-Button-1>)

Triple - потрійний

Quadruple - четверний



Практична частина

 

Програмування вікон із текстами мовою Python3

 

Завдання 1. Створити, реалізувати, протестувати алгортим для  одного вікна та різного дизайну для трьох  текстових повідомлень у цьому вікні

Реалізація.

print('Алгоритм 1 створення одного вікна з текстом та його властивостями ')

from  tkinter import*

import tkinter.messagebox

window1=tkinter.Tk();     #створення вікна з назвою window1

window1.title("Новина №1");   #створення  заголовку або назви для вікна: Повідомлення №1

window1.config(bg="#000000", width=600, height=450, relief=RAISED, bd=12)

#задаються властивості вікна: заливка тла: чорна, ширина вікна 600, висота вікна 450,   межі вікна: RAISED,  товщина межі вікна 12

window1.geometry("700x600+20+10")

#задається розмір вікно: 700x600 та координати розташування вікна: +20+10

text1=tkinter.Label(window1, text="Учора у нашому місті  ",

                    width=40, height=3, bg="gold", fg="indigo",

                    font="Times, 16", justify="center")

text1.pack()

#задається перша частина повідомлення:  Це отут я хочу побачити

text2=tkinter.Label(window1, text=" відбулася  церемонія подяки",

                    width=50, height=4, bg="gray", fg="red",

                    font="Courier, 18", justify="left")

text2.pack()

#задається друга частина повідомлення:  сьогодні свій текст про те,

text3=tkinter.Label(window1, text=" та вручення нагород волонтерам. ",

                    width=70, height=5, bg="pink", fg="black",

                    font="Tahoma, 16", justify="right")

text3.pack()

#задається третя частина повідомлення:  що  я навчився програмувати вікна

window1.mainpool()   #викликається метод наведення вікна на моніторі

 

Протестувати цей алгоритм для таких повідомлень:  text1="Це сьогодні ми в червоній зоні!",

text2=" Сьогодні тільки ті, хто на понтах, не носить маску",

text3="Через три дні  місто переходить в помаранчеву зону".

 

Завдання 2. Створити, реалізувати, протестувати алгортим для  двох вікон різних розмірів та різного дизайну з текстом для трьох розділів у відповідному вікні.

Реалізація.

print('Алгоритм 2 створення двох вікон-канвасів з геометричними фігурами та текстом з їхніми властивостями ')

from  tkinter import*;   import tkinter.messagebox; iluzion1=Tk(); 

iluzion1.title("5-КУТНИК №1")

iluzion1.config(bg="violet", width=400, height=350, relief=RAISED, bd=9)

iluzion1.geometry("600x500+20+10")

canvas1=Canvas(iluzion1, width=300, height=300); canvas1.pack()

canvas1.create_polygon(50,50,250,100,160,160, 100, 140, 80, 90, fill="red", outline="#556677")

canvas1.create_text(90,25,  text="Це  5-кутник", font=('Times',20))

canvas1.pack()

iluzion2=Tk()

iluzion2.title("6-КУТНИК №2")

iluzion2.config(bg="violet", width=500, height=550, relief=RIDGE, bd=15)

iluzion2.geometry("400x500+650+10")

canvas2=Canvas(iluzion2, width=300, height=300);  canvas2.pack()

canvas2.create_polygon(100,100,200,50,300,100, 300, 200, 200,250, 100,200, fill="green", outline="#991133")

canvas2.create_text(110,25,  text="Це  6-кутник", font=('Times',30)); canvas12.pack()

Протестувати цей алгоритм для таких повідомлень:  фігура=" 5-кутник”; фігура=" 6-кутник

 

Завдання 3. Створити, реалізувати, протестувати алгортим для  трьох вікон різних розмірів та різного дизайну з текстом для трьох розділів у відповідному вікні.

Реалізація.

print('Алгоритм 3 створення трьох різних вікон з текстом та його властивостями ')

from  tkinter import*

import tkinter.messagebox

vikno1=tkinter.Tk();   vikno1.title("Вікно №1"); vikno1.config(bg="violet", width=300, height=150, relief=RAISED, bd=9)

vikno1.geometry("500x300+20+10")

label1=tkinter.Label(vikno1, text="Тут список першої групи", width=30, height=5, bg="indigo", fg="orange",font="Tahoma, 18", justify="center");  label1.pack()

vikno2=tkinter.Tk();  vikno2.title("Вікно №2"); vikno2.config(bg="pink", width=600, height=200, relief=GROOVE, bd=12)

vikno2.geometry("600x400+600+50")

label2=tkinter.Label(vikno2, text="Тут буде  список другої групи", width=30, height=9, bg="silver", fg="yellow",font="Arial, 14", justify="right") ;  label2.pack()

vikno3=tkinter.Tk(); vikno3.title("Вікно №3"); vikno3.config(bg="purple", width=200, height=150, relief=RIDGE, bd=15)

vikno3.geometry("380x250+50+390")

label3=tkinter.Label(vikno3, text="Тут буде  список третьої групи", width=20, height=10, bg="green", fg="gold",font="Calibri, 14", justify="left");   label3.pack()

vikno3.mainloop();  vikno2.mainloop();  vikno1.mainloop()

 

Завдання 4. Створити, реалізувати, протестувати алгортим для  вікна з кнопкою різних розмірів та різного дизайну з  годинником.

Реалізація.

print('Алгоритм 4 налаштування кнопки у вікні з годинником')

import tkinter

import time

from  tkinter import*

from tkinter import Tk, BOTH

from tkinter.ttk import Frame, Button, Style

def  button_clicked():

    button['text']=time.strftime('%H:%M:%S')

window=Tk()

button1=tkinter.Button(window, text="Електронний годинник",

                    width=15, height=1, bg="yellow", fg="black",

                    font="Times, 12", justify="center", padx=1, pady=1) # створення кнопки

button1.config(bg="pink", width=10, height=1, relief=RIDGE, bd=5)

button1.configure(text=time.strftime('%H:%M:%S'), command=button_clicked)

button1.pack() #реалізація кнопки у вікні

window.mainloop()

Завдання 5.

Реалізація.

print('Алгоритм 4 налаштування двох кнопок у вікні');  import tkinter;  from  tkinter import*

from tkinter import Tk, BOTH; from tkinter.ttk import Frame, Button;  import tkinter.messagebox

from tkinter import WORD;   root=tkinter.Tk()    #створення вікна

root.title("Вікно з кнопкою")     #створення заголовку вікна

root.config(bg="purple", width=700, height=650, relief=RIDGE, bd=15)    #створення дизайну вікна

root.geometry("380x250+50+390")    #створення розташування вікна

button1=tkinter.Button(root, text="Кнопка 1",

                    width=15, height=1, bg="gold", fg="indigo",

                    font="Times, 12", justify="center", padx=1, pady=1)     # створення кнопки 1

button1.config(bg="gray", width=10, height=1, relief=RIDGE, bd=8)

button1.pack()      #реалізація кнопки 1 у вікні

button2=tkinter.Button Створити, реалізувати, протестувати алгортим для  вікна з кнопкою різних розмірів та різного дизайну з  годинником. (root,  text="Кнопка 2",

                    width=9, height=1, bg="gold", fg="indigo",

                    font="Times, 12", justify="left", padx=7, pady=7) # створення кнопки 2

button2.config(bg="violet", width=10, height=1, relief=RIDGE, justify="right", bd=15)

button2.pack() #реалізація кнопки 2 у вікні

root.mainloop()

Завдання 6. Створити, реалізувати, протестувати алгортим для трьох  вікон з кнопкою.

Реалізація

print('Алгоритм 6 створення трьох вікон-канвасів з кнопкою  та текстом з їхніми властивостями ')

from tkinter import Tk, BOTH;  from tkinter.ttk import Frame, Button, Style

class Example(Frame):

    def __init__(self, parent):

        Frame.__init__(self, parent)

        self.parent = parent

        self.initUI()

    def initUI(self):

        self.parent.title("Приклад кнопки у допоміжному вікні")

        self.style = Style()

        self.style.theme_use("default")

        self.pack(fill=BOTH, expand=1)

        quitButton = Button(self, text="Натисни на цю кнопку", command=self.quit)

        quitButton.place(x=200, y=50)

def main():

    root1 = Tk()

    root1.geometry("450x150+300+300")

    Example(root1)

    root1.mainloop()

def main1():

    root2 = Tk()

    root2.geometry("550x150+20+30")

    Example(root2)

    root2.mainloop()

def main2():

    root3 = Tk()

    root3.geometry("350x150+200+150")

    Example(root3)

    root3.mainloop()

if __name__ == '__main__':

    main()

if __name__ == '__main__':

    main1()

if __name__ == '__main__':

    main2()

Завдання 7. Створити, реалізувати, протестувати алгортим для двох  вікон з фігурами.

Реалізація

print('Алгоритм 7створення двох вікон-канвасів з геометричними фігурами та текстом з їхніми властивостями ')

from  tkinter import*; import tkinter.messagebox

iluzion1=Tk(); iluzion1.title("6-КУТНИК №1")

iluzion1.config(bg="violet", width=400, height=350, relief=RAISED, bd=9)

iluzion1.geometry("600x500+20+10")

canvas1=Canvas(iluzion1, width=300, height=300); canvas1.pack()

canvas1.create_polygon(50,50,250,100,240,200, 230,260, 205,280, 100, 180, 20, 60, fill="red", outline="#556677")

canvas1.create_text(90,25,  text="Це 6-кутник", font=('Times',20));  canvas1.pack()

iluzion2=Tk()

iluzion2.title("5-КУТНИК №2")

iluzion2.config(bg="violet", width=500, height=550, relief=RIDGE, bd=15)

iluzion2.geometry("400x500+650+10")

canvas2=Canvas(iluzion2, width=300, height=300);  canvas2.pack()

canvas2.create_polygon(95,45,175,80,200,175, 125, 225, 25, 125, fill="green", outline="#991133")

canvas2.create_text(120,15,  text="Це   5-кутник", font=('Times',30));  canvas12.pack()

Алгоритми пошуку НСД та НСК, розгалуження та повторення

Завдання 8. Створити, реалізувати, протестувати алгоритм знаходження пошуку найбільшого числа та найменшого  числа за відомою піврізницею та півсуммою двох випадкових чисел.

Реалізація.

print('Алгоритм 1 пошуку  найбільшого числа та найменшого числа за піврізницею та за півсумою двох чисел ')

m=int(input('Введіть півсуму з клавіатури'))

n=int(input('Введіть піврізницю з клавіатури'))

x=m+n;  y= m-n

print('Відповідь: 1-e число x=', x )

print('Відповідь: 2-e число', y)

if x>y:

    print('max=', x , 'min=', y)

elif y>x:

    print('max=',y, 'min=', x)

 

Протестувати  алгоритм для таких чисел: 1)піврізниця: -2,  півсума: 22; 

2) піврізниця: -3,  півсума:-8;    3) піврізниця: 0,  півсума:-8;   4) піврізниця: 9, півсума: 9

 

Завдання 9. Створити, реалізувати, протестувати алгоритм знаходження пошуку найбільшого числа та найменшого  числа за відомою піврізницею та півсуммою двох випадкових чисел.

Реалізація.

print('Алгоритм 2 пошуку  найбільшого числа та найменшого числа за півДОБУТКОМ та за півЧАСТКОЮ двох ДОДАТНИХ чисел ')

m=float(input('Введіть півДОБУТok з клавіатури'))

n=float(input('Введіть півЧАСТКy з клавіатури'))

x=2*(m*n)**0.5;  y= (m/n)**0.5

print('Відповідь: 1-e ДОДАТНЕ число x=', x )

print('Відповідь: 2-e ДОДАТНЕ число', y)

if x>y:

    print('max=', x , 'min=', y)

elif y>x:

    print('max=',y, 'min=', x)

 

Протестувати  алгоритм для таких четвірок чисел: 1) півдобуток: 2, півчастка: 22;

  2) півдобуток:36, півчастка:8;    3) півдобуток: 0,  півчастка6 8;   4) півдобуток:1, півчастка: 1.

 

 Завдання 10. Одинокий шаховий король знаходиться на шаховій дошці розміром NxN. Як і всі шахові королі він може перейти за один хід на сусідню клітинку. Скільки можливих варіантів ходу є короля? Програма  читає з пристрою стандартного введення 3 натуральних числа  N, X,Y.  Кожне з чисел не більше 50, числа розділені пропусками (N ≥X,Y) N- розмір сторони дошки, X,Y – номер стрічки та стовпця клітинки з королем. Програма виводить єдине число – шукану величину.

 

Реалізація.

 

print('Алгоритм  3пошуку кількості ходів короля на шахівниці розміром nxn ')

n=int(input('Введіть 1-е додатне число з клавіатури n='))

x=int(input('Введіть 2-е додатне число з клавіатури x='))

y=int(input('Введіть 3-е додатне число з клавіатури y='))

if (((x==1) and (y==1)) or ((x==n) and (y==1)) or ((x==1) and (y==n)) or ((x==n) and (y==n))):

      print(' Кількість ходів фігури король на шахівниці r:=',3)

elif ((x==1) or (x==n) or (y==n) or (y==1)):

      print(' Кількість ходів фігури король на шахівниці r:=',5)

else:

     print(' Кількість ходів фігури король на шахівниці r:=',8)

if n==1:

    print(' Кількість ходів фігури король на шахівниці r:=',0)

 

Завдання 11. Створити, реалізувати, протестувати алгоритм знаходження пошуку півтретини різниці та півчверті суми найбільшого числа та найменшого  числа із чотирьох введених з клавіатури цілих чисел.

Реалізація.

print('Алгоритм 4 пошуку піврізниці найбільшого числа та найменшого числа із чотирьох цілих чисел ')

v1=int(input('Введіть 1-е число з клавіатури'));    v2=int(input('Введіть 2-е число з клавіатури'))

v3=int(input('Введіть 3-е число з клавіатури'));   v4=int(input('Введіть 4-е число з клавіатури'))

print('Відповідь: найбільше число')

if ((v1>v2) and (v1>v3) and  (v1>v4)):

    print('max=', v1)

elif ((v2>v3) and (v2>v4)):

    print('max=',v2)

elif v3>v4:

    print('max=',v3)

else:

    print('max=', v4)

print('Відповідь: найменше число')

if ((v1<v2) and (v1<v3) and  (v1<v4)):

    print('min=', v1)

elif ((v2<v3) and (v2<v4)):

    print('min=',v2)

elif v3<v4:

    print('min=',v3)

else:

    print('min=', v4)

m=max(v1,v2,v3,v4); n=min(v1,v2,v3,v4);

print('Відповідь: піврізниця найбільшого та найменшого чисел с= (max-min)/6=', (m-n)/6)

print('Відповідь: півcума найбільшого та найменшого чисел с= (max+min)/8=', (m+n)/8)

 

Протестувати  алгоритм для таких четвірок чисел: 1) 2, 2, 2, 2   2) -3,8, -1, 9    3)-9, -8, 7, 7  4) -3, -5, -8, -1.

 

   Завдання 12. В цукерню  «Солодка мрія» завезли  цукерок і тістечок. Продавці бажають продати всі свої товари без залишку. Прийшов оптовий покупець, який закуповує подарунки для дітей на свято. Але, щоб нікому з дітей не було образливо, подарунки мають бути однаковими, тобто в кожному подарунку має бути однакова кількість цукерок і однакова кількість тістечок. Скільки цукерок і скільки тістечок  повинен покласти продавець в кожен подарунок, щоб кількість подарунків була максимальною? Програма читає з пристрою стандартного введення  числа m та n  кожне з яких не перевищує 50000. Програма виводить через пропуск   кількість цукерок і тістечок в кожному подарунку.

Реалізація.

print('Алгоритм 5 пошуку кількості цукерок і тістечок у кожному подарунку')

m=int(input('Введіть  з клавіатури число цукерок '))

n=int(input('Введіть з клавіатури число тістечок')) 

a=n; b=m;

print('Пошук найбільшого спільного дільника для двох чисел ',a,' i ',b)

while a*b>0:

      if a>b:

          a=(a%b); print('остача a%b=',a,'%',b,'=', a);

      else:

          b=(b%a); print('остача b%a= ',b,'%',a,'=', b);

d=a+b;  

print('Найбільший спільний дільник = НСД(',n,';',m,')=d=',a,'+',b,'=d=', d);

print('Найменше спільне кратне= НСK(',n,';',m,')=n*m//d=k=',a,'*',b,'=', n*m//d);

print('Пошук двох часток від ділення даних чисел n i m  на їхнє  НСД'  )

kn=(n//d); km=(m//d)

print('Кількість цукерок у одному подарунку kn=',n,'//',d,'=',kn)

print('Кількість тістечок у одному подарунку: km=',m,'//',d,'=',km)

 

Протестувати  алгоритм для таких четвірок чисел: 1) цукерок: 2, тістечок: 22;

  2)цукерок:36, тістечок: 8;    3) цукерок: 0,  тістечок 8;   4) цукерок:1, тістечок: 1.  

 

Результати виконання практичної частина надіслати на електронну адресу учителя: vinnser@gmail.com