Friday, January 7, 2022

Хос тойрог Python Turtle Art

 


import turtle
import colorsys
wn = turtle.Screen()
wn.bgcolor('black')
n = 20
h = 0
turtle.speed(1)
for i in range(30):
    c = colorsys.hsv_to_rgb(h, 1, 0.8)
    h += 1 / n
    turtle.color(c)
    turtle.circle(5*i)
    turtle.circle(-5*i)
    turtle.left(i)
turtle.exitonclick() #зурж дуусаад товших хүртэл дэлгэц хаагдахгүй.


Таван хошуу Python Turtle Art

 


import turtle
t = turtle.Turtle()
s = turtle.Screen()
s.bgcolor('black')
t.speed(10)
col = ['red', 'yellow', 'green', 'skyblue', 'blue', 'pink', 'white']
c = 0
t.left(36)
for i in range(70):
    t.forward(i*10)
    t.left(144)
    t.color(col[c])
    if c == 6:
        c = 0
    else:
        c += 1


Turtle Art 7 өнгийн спираль

 


from turtle import *
col = ['red','orange','yellow','green','cyan','blue','lightpink']
bgcolor('black')
speed(0)
for i in range(200):
    pencolor(col[i % 7]) # col лист дэх 7 өнгийг дараалан сонгоно.
    width(i/100+1)
    forward(i)
    left(50) # 360/7=51.4 гэж гарч байгааг 50 гэж оруулбал хазгай тойрно.

hideturtle()

done()


Wednesday, January 5, 2022

Turtle дээр санамсаргүй зүгт, санамсаргүй зайд, санамсаргүй өнгөөр цацраг зурах

 # санамсаргүй зүгт, санамсаргүй зайд, санамсаргүй өнгөөр цацраг зурах


import turtle
import random
wn = turtle.Screen()
wn.bgcolor('black')
col = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'lightpink']

t = turtle.Turtle()
t.pensize(1)
for i in range(100):
    col_num = random.randint(0,6)
    angle = random.randint(0,45)
    dis = random.randint(50,200)
    t.color(col[col_num])
    t.right(angle)
    t.forward(dis)
    t.backward(dis)


Фрактал цасан ширхэг зурах код Turtle Art дээр

 # Turtle Art дээр Фрактал цасан ширхэг зурах код


import turtle
def star(turtle, n,r):
    for k in range(0,n):
        turtle.pendown()
        turtle.forward(r)
        turtle.penup()
        turtle.backward(r)
        turtle.left(360/n)
 
def recursive_star(turtle, n, r, depth, f):
    if depth == 0:
        star(turtle, n, f*4)
    else:
        for k in range(0,n):
            turtle.pendown()
            turtle.forward(r)
            recursive_star(turtle, n, f*r, depth - 1,f)
            turtle.penup()
            turtle.backward(r)
            turtle.left(360/n)
 
turtle.speed("fastest")
s = turtle.Screen()
s.bgcolor('white')
recursive_star(turtle, 5 , 150, 4, 0.4)



Корона вирусийн зураг Turtle Art дээр

 # Корона вирусийн зураг


from turtle import *
speed(10)
color('cyan')
bgcolor('black')
up()
goto(250,50)
down()
b = 200
while b > 0:
    left(b)
    forward(b*3)
    b -= 1


Шинэ жилийн сүлд мод зурав

 # шинэ жилийн сүлд мод


count = 1
width = 20
for i in range(10):
    print(('*'*count).center(width))
    count += 2
print(('| |').center(width))



Monday, January 3, 2022

Turtle Art дээр Тойрсон Таван хошуу зурав

 


# pip install turtle

import turtle
import colorsys

t = turtle.Turtle()
s = turtle.Screen()
s.bgcolor('black')
t.speed(0)
n = 36
h = 0
for i in range(38):
    c = colorsys.hsv_to_rgb(h, 1, 0.8)
    h += 1/n
    t.color(c)
    t.left(10)
    for j in range(5):
        t.forward(200)
        t.left(144)



Turtle Art Зүрхний цахилгаан бичлэгийг дуурайн зурав

 Python орчинд Turtle Art зураг зурах хэд хэдэн жишээг энд оруулья. 

Эхлээд консол дээрээ дараах команд бичиж Turtle Art сулгана.

C:> pip install turtle

Зүрхний цахилгаан бичлэгийн жишээ.


from turtle import *

up()
goto(-350,0)
down()

for i in range(0,5):
    forward(20)
    left(80)
    forward(20)
    right(160)
    forward(20)
    left(80)
    forward(20)
    right(80)
    forward(20)
    left(160)
    forward(100)
    right(160)
    forward(180)
    left(160)
    forward(100)
    right(80)
    forward(20)



Saturday, December 11, 2021

Flask вэбийн жишээ

 


# pip install flask
# flask вэб ажиллуулах

from flask import Flask, render_template, request, redirect
import json
import random
import string

def get_random_string(length=3):
    letters = string.ascii_lowercase
    result_str = ''.join(random.choice(letters) for i in range(length))
    return result_str

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def home():
    if request.method == 'POST':
        student_name = request.form['lastName']
        print(f'student_name = {student_name}')
        Student_Class = request.form['Class']
        print(f'Student_Class = {Student_Class}')
        student_dob = request.form['Student_DoB']
        print(f'Student_DoB = {student_dob}')
        grade = request.form['Grade']
        print(f'Student_Grade = {grade}')
        # суралцагч утга авах хэсэг
        student = {
            'index': get_random_string(),
            'lastName': student_name,
            'Class': Student_Class,
            'Student_Dob': student_dob,
            'Grade': grade
        }
        # print('student =', student)
        students = read_info()['Students']
        # print('students =', students)
        students.append(student)
        # print('students =', students)

        teacher_fname = request.form['firstname']
        print(f'teacher_fname = {teacher_fname}')
        teacher_lname = request.form['lastname']
        print(f'teacher_lname = {teacher_lname}')
        teacher_dob = request.form['teacher_DoB']
        print(f'teacher_dob = {teacher_dob}')
        degree = request.form['Degree']
        print(f'degree = {degree}')
        experience = request.form['Experience']
        print(f'experience = {experience}')
        # багшийн мэдээлэл авах хэсэг
        teacher = {
            'index': get_random_string(),
            'firstname': teacher_fname,
            'lastname': teacher_lname,
            'teacher_DoB': teacher_dob,
            'Degree': degree,
            'Experience': experience
        }
        # print('teacher =', teacher)
        teachers = read_info()['Teachers']
        # print('teachers =', teachers)
        teachers.append(teacher)
        # print('teachers =', teachers)    
       
        create_enrol(students, teachers)
        return redirect('/')
    else:
        return render_template('index.html')

def create_enrol(student_info, teacher_info):
    info = {
        'Students': student_info,
        'Teachers': teacher_info
    }    # тусдаа хоёр утгуудаа нэгтгэж байгаа хэсэг тэгээд нэг файлд Датабаз хийнэ

    with open('db.txt', 'w') as db:
        json.dump({'Information': info}, db)

def read_info():
    with open('db.txt') as db:
        data = json.load(db)
        # print(f'data = {data}')
        info_data = data['Information']
        return info_data

@app.route('/list', methods=['GET'])
def info_list():
    return render_template('list.html', information_list = read_info())

@app.route('/update/<index>', methods=['GET', 'POST'])
def info_update(index):
    print('before index = ', index)
    stu = get_info(index)
    print('before info = ', stu)
   
    if stu is None:
        return redirect('/not-found')

    if request.method == 'POST':
        print("request.form['lastName'] =", request.form['lastName'])
        print("request.form['Class'] =", request.form['Class'])
        print("request.form['Student_Dob'] =", request.form['Student_Dob'])      
        print("request.form['Grade'] =", request.form['Grade'])
        stu['lastName'] = request.form['lastName']
        stu['Class'] = request.form['Class']
        stu['Student_Dob'] = request.form['Student_Dob']
        stu['Grade'] = request.form['Grade']
        update_student(stu)
        return redirect('/list')
    else:
        return render_template('update.html', stu = stu)

@app.route('/update_t/<index>', methods=['GET', 'POST'])
def info_update_t(index):
    print('before index = ', index)
    teacher = get_info_t(index)
    print('before info = ', teacher)

    if teacher is None:
        return redirect('/not-found')

    if request.method == 'POST':
        print("request.form['lastname'] =", request.form['lastname'])
        print("request.form['firstname'] =", request.form['firstname'])
        print("request.form['teacher_DoB'] =", request.form['teacher_DoB'])
        print("request.form['Degree'] =", request.form['Degree'])
        print("request.form['lastname'] =", request.form['Experience'])
        teacher['lastname'] = request.form['lastname']
        teacher['firstname'] = request.form['firstname']
        teacher['teacher_DoB'] = request.form['teacher_DoB']
        teacher['Degree'] = request.form['Degree']
        teacher['Experience'] = request.form['Experience']
        update_teachers(teacher)
        return redirect('/list')
    else:
        return render_template('update_t.html', teacher = teacher)

def get_info(get_par):
    info_datas = read_info()
    students = info_datas['Students']
    index_s = []
    for item in students:
        if item['index'] == get_par:
            index_s.append(item)
   
    if len(index_s) > 0:
        return index_s[0]

def get_info_t(get_par):
    info_datas = read_info()
    teachers = info_datas['Teachers']
    index_s = []
    for item in teachers:
        if item['index'] == get_par:
            index_s.append(item)

    if len(index_s) > 0:
        return index_s[0]

def update_student(up_Stu):
    students = read_info()['Students']
    teachers = read_info()['Teachers']
    for item in students:
        if item['index'] == up_Stu['index']:
            item['lastName'] = up_Stu['lastName']
            item['Student_Dob'] = up_Stu['Student_Dob']
            item['Class'] = up_Stu['Class']
            item['Grade'] = up_Stu['Grade']
            break
    info = {
        'Students': students,
        'Teachers': teachers
    }
    with open('db.txt', 'w') as db:
        json.dump({'Information':info}, db)

def update_teachers(up_Teacher):
    students = read_info()['Students']
    teachers = read_info()['Teachers']
    for item in teachers:
        if item['index'] == up_Teacher['index']:
            item['firstname'] = up_Teacher['firstname']
            item['lastname'] = up_Teacher['lastname']
            item['teacher_DoB'] = up_Teacher['teacher_DoB']
            item['Degree'] = up_Teacher['Degree']
            item['Experience'] = up_Teacher['Experience']
            break
    info = {
        'Students': students,
        'Teachers': teachers
    }
    with open('db.txt', 'w') as db:
        json.dump({'Information':info}, db)

@app.route('/list/<index>', methods=['GET', 'POST']) # устгах хэсэг
def delete_info(index):
    info_datas = read_info()
    students = info_datas['Students']
    teachers = info_datas['Teachers']
   
    if index is None:
        return redirect('/not-found')

    # if request.method == 'POST':
    index_s = []
    for item in students:
        index_s.append(item['index'])
    index_t = []
    for item in teachers:
        index_t.append(item['index'])
    print(index_s)
    print(index_t)

    if index in index_s:
        student_index = index_s.index(index)
        students.pop(student_index)
    if index in index_t:
        teacher_index = index_t.index(index)
        teachers.pop(teacher_index)
    info = {
        'Students': students,
        'Teachers': teachers
    }
    with open('db.txt', 'w') as db:
        json.dump({'Information':info}, db)    
        return redirect('/list')
   

@app.route('/not-found')
def not_found():
    return 'Хоосон байна, буцна уу!!!'  

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=8080)

# тус flask код ажиллуулахын тулд хэд хэдэн файлийн систем байх болно.
#Тиймээс уг файлуудыг энд зип файлаар оруулья. Энд дарж татаж авна уу.

Excel файлийн нүднүүдэд утга оруулах


# consol дээр дараах код бичиж excel файлтай ажиллах боломжтой болно
# pip install openpyxl
# sample1.xlsx файл үүсгэж, уг файлаа хаасан байгаараай.


from openpyxl import Workbook
import random

book = Workbook()
sheet1 = book.active
num = 1000
n = 4
m = 1
for n1 in range(num):
    var02 = random.randint(0, 10)
    if m > 20:
        m = 1
        n += 1
    sheet1.cell(row=m, column=n, value=var02)
    m += 1

sheet1.cell(row=4, column=2, value="Hello World!")
sheet1['A2'] = 43
sheet1['B2'] = "Hi, Python"

book.save("sample1.xlsx")

# дээрх кодыг excel_write.py гэсэн нэрээр хадгалаад
# consol дээр
# d:/>python excel_write.py
# гэж ажлуулаад дараа нь sample1.xlsx файлаа нээж үзвэл дараах байдалтай харагдах болно.



Excel файлаас утга авах


#!/usr/bin/env python
# consol дээр дараах код бичиж excel файлтай ажиллах боломжтой болно
# pip install openpyxl
# sample.xlsx файл үүсгэж B1, B2, B3 нүдэнд юм бичсэн байх хэрэгтэй.

import openpyxl

book = openpyxl.load_workbook('sample.xlsx')

sheet1 = book.active

a1 = sheet1['B1'] #sample.xlsx файл доторх B1 нүдний утгыг авна
a2 = sheet1['B2'] #sample.xlsx файл доторх B2 нүдний утгыг авна
a3 = sheet1.cell(row=3, column=2) #B3 нүдний утгыг авна

print(a1.value)
print(a2.value)
print(a3.value)

Tuesday, July 20, 2021

tkinter Тооны машин хийх код

# Тооны машин хийх код 

# https://www.studytonight.com/tkinter/calculator-application-using-tkinter

from tkinter import *

win = Tk() # Үндсэн цонхыг үүсгэнэ
win.geometry("312x324")  # Цонхныхоо хэмжээг зааж өгнө 
win.resizable(00)  # Уг цонхны хэмжээ өөрчлөгдөхөөс сэргийлнэ
win.title("Тооны машин")

################### Функц эхлэх хэсэг ####################
# 'btn_click' Функц : 
# Энэ функц нь тооны машинд тоог оруулах бүрд  
# тасралтгүй шинэчлэгдэх юм 

def btn_click(item):
    global expression
    expression = expression + str(item)
    input_text.set(expression)

# 'bt_clear' Функц : Энэ нь оролтын талбар дахь 
# илэрхийллийг цэвэрлэх юм

def bt_clear(): 
    global expression 
    expression = "" 
    input_text.set("")
 
# 'bt_equal': Энэ метод нь оролтын 
# талбар дахь илэрхийлэлийг тооцоолно
 
def bt_equal():
    global expression
    result = str(eval(expression)) # 'eval': илэрхийллийн мөрийг үнэлэх функц юм.
    input_text.set(result)
    expression = ""
 
expression = ""
 
# 'StringVar()' : Оролтын талбар дахь утгыг авч хэрэглэх юм.
input_text = StringVar()
 
# Оролтын талбарын фрэйм үүсгэх хэсэг
input_frame = Frame(win, width=312, height=50, bd=0, highlightbackground="black", highlightcolor="black", highlightthickness=2)
input_frame.pack(side=TOP)
 
#Оролтын талбарын 'Frame' дотор талын тохиргоог хийх хэсэг
input_field = Entry(input_frame, font=('arial'18'bold'), textvariable=input_text, width=50, bg="#eee", bd=0, justify=RIGHT)
input_field.grid(row=0, column=0)
input_field.pack(ipady=10# 'ipady' нь оролтын талбарын дотор талаас өндрийн зай авах хэмжээг заана
 
#'Input_frame' доор байрлах товчлууруудын бусад 'Frame'-үүдээ бүтээе.
btns_frame = Frame(win, width=312, height=272.5, bg="grey")
btns_frame.pack()
 
# Эхний мөр
clear = Button(btns_frame, text = "C", fg = "black", width = 32, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: bt_clear()).grid(row = 0, column = 0, columnspan = 3, padx = 1, pady = 1)
divide = Button(btns_frame, text = "/", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("/")).grid(row = 0, column = 3, padx = 1, pady = 1)
 
# Хоёр дахь мөр
seven = Button(btns_frame, text = "7", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(7)).grid(row = 1, column = 0, padx = 1, pady = 1)
eight = Button(btns_frame, text = "8", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(8)).grid(row = 1, column = 1, padx = 1, pady = 1)
nine = Button(btns_frame, text = "9", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(9)).grid(row = 1, column = 2, padx = 1, pady = 1)
multiply = Button(btns_frame, text = "*", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("*")).grid(row = 1, column = 3, padx = 1, pady = 1)
 
# Гурав дахь мөр
four = Button(btns_frame, text = "4", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(4)).grid(row = 2, column = 0, padx = 1, pady = 1)
five = Button(btns_frame, text = "5", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(5)).grid(row = 2, column = 1, padx = 1, pady = 1)
six = Button(btns_frame, text = "6", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(6)).grid(row = 2, column = 2, padx = 1, pady = 1)
minus = Button(btns_frame, text = "-", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("-")).grid(row = 2, column = 3, padx = 1, pady = 1)
 
# Дөрөв дэх мөр
one = Button(btns_frame, text = "1", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(1)).grid(row = 3, column = 0, padx = 1, pady = 1)
two = Button(btns_frame, text = "2", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(2)).grid(row = 3, column = 1, padx = 1, pady = 1)
three = Button(btns_frame, text = "3", fg = "black", width = 10, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(3)).grid(row = 3, column = 2, padx = 1, pady = 1)
plus = Button(btns_frame, text = "+", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click("+")).grid(row = 3, column = 3, padx = 1, pady = 1)
 
# Дөрөв дэх мөр
zero = Button(btns_frame, text = "0", fg = "black", width = 21, height = 3, bd = 0, bg = "#fff", cursor = "hand2", command = lambda: btn_click(0)).grid(row = 4, column = 0, columnspan = 2, padx = 1, pady = 1)
point = Button(btns_frame, text = ".", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: btn_click(".")).grid(row = 4, column = 2, padx = 1, pady = 1)
equals = Button(btns_frame, text = "=", fg = "black", width = 10, height = 3, bd = 0, bg = "#eee", cursor = "hand2", command = lambda: bt_equal()).grid(row = 4, column = 3, padx = 1, pady = 1)

win.mainloop()