Programmeerimise alused

dmitry.fedotov@tthk.ee

Занятие 1

Вводное занятие. Входное тестирование знаний. Алгоритмы и блок-схемы

Занятие 2

Введение в Python. Переменные. Конструкции IF-ELIF-ELSE

Занятие 3

Циклы. Циклы с предусловием. Циклы с постусловием. Циклы со счетчиком. Циклы перебора.

Цикл по счетчику
osnovanie=int(input("Введите основание степени"))
stepen=int(input("Введите показатель степени"))
resultat=osnovanie
for i in range(1,stepen):# i меняется от 1 до(!!!)stepen 
    #цикл будет выполняться столько раз, сколько в stepen
    resultat=resultat*osnovanie
print(osnovanie, "в степени", stepen, "равно", resultat)
Цикл с постусловием
while True:
    otvet=input("Купи слоника") # действие в цикле
    if otvet=="куплю": #условие выхода из цикла
        break
    else:# действие, если условие выхода не выполнилось
        print("все говорят",otvet,"а ты возьми и")
Цикл с предусловием
# вывести все четные числа от 2 до введенно пользователем
chislo=int(input("Введите произвольное число"))
drugoe=2
while drugoe<=chislo:
    print(drugoe)
    drugoe+=2 # drugoe=drugoe+2
Легенда о шахматах
# Легенда о шахматах
Summa=0 # общая сумма зерен
kletka=1 # количество зерен на первой клетке
for i in range(1,9):
    for j in range(1,9):
        Summa=Summa+kletka # Summa+=kletka
        kletka=kletka*2 # kletka*=2
print("Мудрец получит", Summa, "зерен")

Задание: программа “ЭХО”

Занятие 4

Массивы: Списки, Словари, Кортежи

Массивы
Список – Нумерованный массив. Индекс является целым числом от 0
Словарь – Ассоциативный массив. Индекс является словом только лат. и цифры
Кортеж – Список, в который нельзя записывать значения в момент выполнения программы
Текстовая строка воспринимается как список, каждая буква – отдельный элемент

jaschik=[20,34,56] #Список
Objem=jaschik[0]*jaschik[1]*jaschik[2]
print("Ящик с размерами: ширина - ",jaschik[0])
print("длина - ",jaschik[1])
print("высота - ",jaschik[2])
print("Объем ящика равен: ",Objem)

jaschik[2]=100
print(jaschik)
korobka=(5,7,10) # Кортеж Tuple 
objem2=korobka[0]*korobka[1]*korobka[2]
print("Объем коробки: ", objem2)
korobka[1]=6 # выдаст ошибку, в кортеж записывать нельзя
chelovek={"ik":37895665515,"nimi":"Ivar"} # Словарь Dict 
print(chelovek["nimi"])
primer={1:"Odin","1":"Vtoroj"}
print(primer["1"])
kakojToTekst="однажды в студеную зимнюю пору"
print(kakojToTekst[8]) # отпечатает букву "в"
print(kakojToTekst[-3]) # отпечатает "o" - третья с конца
print(kakojToTekst[10:17]) # выборка с 10 до(!!!) 17 
print(kakojToTekst[19:-6])
# анализ персонального кода
ik="58653121421"
pol=ik[0]
god=ik[1:3]
mesjac=ik[3:5]
den=ik[5:7]
gender=["","mees","naine","mees","naine","mees","naine"]
kuu=["","Jaanuar","Veebruar","Märts","Aprill","Mai",
     "Juuni","Juuli","August","September","Oktoober",
     "November","Detsember"]
month={"01":"Jaanuar","02":"Veebruar","03":"Märts",
       "04":"Aprill","05":"Mai","06":"Juuni",
       "07":"Juuli","08":"August","09":"September",
       "10":"Oktoober","11":"November","12":"Detsember"}
print(gender[int(pol)])
print(kuu[int(mesjac)])
print(month[mesjac])
Домашнее задание на 2024-01-15:

Дан массив целых чисел. Массив произвольной длины.
1. Создать алгоритм нахождения минимального и максимального числа в массиве.
2. Написать код по созданному алгоритму.

Занятие 5

Функция перевода строки в дату

Время в формате Unix

Урок 2024-02-05

Файл 1:

import math
from random import randint
# создание функции
def max3(a,b=0,c=0):
    if a>b:
        res=a
    else:
        res=b
    if c>res:
        res=c
    return res

def vCyl(d,h):
    V=math.pi*(d**2)/4*h
    return V

def mulN(*razmer):
    res=1
    for a in razmer:
        res=res*a
    return res

def DnDice(*sides):
    '''sides - через запятую количество сторон на каждом кубике'''
    for N in sides:
        print('На кубике',N,"выпало",randint(1,N))


def user(**userData):
    print("Имя пользователя", userData['name'])
    if userData['age']>18:
        print("Доступ разрешен")
    else:
        print("В доступе отказано")


Файл 2:

from tund20240205 import max3,vCyl,mulN,DnDice,user

print(max3(max3(2,4),max3(1,3,6),max3(8)))

print(max3(c=3,b=1,a=0))

print(vCyl(2,3))
print(vCyl(3,2))
print(vCyl(h=3,d=2))
print(mulN(2,3)) 
print(mulN(4,4,8))
print(mulN(1,2,3,4,5,6,7,8,9))

DnDice(6,12,3)

user(name='Dmitry',age=35)
user(name='Евгений',age=16)

Урок 12.02.2024

import math
def getDistance(x1=0,y1=0,z1=0,x2=0,y2=0,z2=0):
    R=math.sqrt((x2-x1)**2+(y2-y1)**2+(z2-z1)**2)
    return R

Задание:

import geometry
# путь №1. Указаны координаты точек [x,y]
route1=[[0,0],[0,4],[3,4],[3,0],[0,0]]
# путь №2. Указаны координаты точек [x,y,z]
route2=[[0,0,0],[1,1,0],[1,1,1],[1,0,0],[2,0,0],[4,1,1],
        [4,2,3],[3,5,0]]
# Написать код или функцию, которая будет считать суммарную
# длину указанных маршрутов с помощью функции getDistance

Урок 13.02.2024

#Объединение массивов. Способ 1
dict1={1:'a',2:'b'}
dict2={2:'c',3:'d'}
dict3=dict1|dict2
print(dict3)

#Объединение массивов. Способ 2
dict4={'es':8.30,'te':8.30}
dict5={'te':14.45,'ko':11.35}
dict6={**dict4,**dict5}
print(dict6)

#Объединение массивов. Способ 3
dict7={'Tallinn':-3,'Pärnu':-1}
dict8=dict7.copy()
dict8['Tallinn']=-10
print(dict7['Tallinn'])
dict9={'Tartu':-4,'Rakvere':-8}
dict8.update(dict9)
print(dict8)

#Сложное создание массива
list1=['Jan','Feb','Mar','May']
list2=[31,29,31,30]
dict10=dict(zip(list1,list2))
print(dict10)

# удаление элемента по ключу
del dict10['Mar']
print(dict10)

del list1[1]
list1.pop(2)
print(list1)
print(list1[1])

#добавление информации 
list1.append('Jun')
list1.insert(1,'Feb')
print(list1)

Задание:

Исходные данные:
List M1
1) Jan
2) Feb
3) Mar
4) Apr
5) May
6) Jun
7) Jul
8) Aug
9) Sep
10) Oct
11) Nov
12) Dec

List M2
1) Янв
2) Фев
3) Мар
4) Апр
5) Май
6) Июн
7) Июл
8) Авг
9) Сен
10) Окт
11) Ноя
12) Дек

List M3
1) 31
2) 28
3) 31
4) 30
5) 31
6) 30
7) 31
8) 31
9) 30
10) 31
11) 30
12) 31

Собрать из трех списков словарь по следующим правилам:
Первый индекс – английское название месяца (М1)
второй индекс – 0 или 1
Значением будут являться соответствующая информация из списков M2 и М3

Пример:
M4[‘Jan’][0] => Янв
M4[‘Jan’][1] => 31