القائمة الرئيسية

الصفحات

بايثون 18 تطبيق عملي(برنامج كتابة يوميات)

 


المحاضرة الثامنة عشر

تطبيق عملي (برنامج كتابة يوميات)

في هذه المحاضرة سنقوم بأنشاء برنامج لكتابة يوميات وحفضها حيث سنستخدم بعض الأدوات التي تم شرحا في المحاضرات السابقة كذلك سنتعلم كيفية تغير تنسيق الخطوط في سطر الأوامر وكيفية اختيار محرر أكواد مناسب للعمل

كيفية اختيار محرر أكواد

في المحاضرات السابقة كنا نستخدم محرر الاكواد الأساسي الذي يتم تنصيبه مع لغة بايثون بشكل تقائي اما الان سنقوم بتنصيب محرر اكواد يسهل العمل علينا حيث يكون اختيار محرر الاكواد من حيث

1.   الراحة الشخصية في العمل

2.   الاكمال التلقائي

3.   تتبع الأخطاء بشكل تلقائي

4.   توفير خاصية debug والتي تقوم بتنفيذ البرنامج وعرض النواتج خطوة بخطوة مما يساعد على التعرف على الأخطاء المنطقية في الكود البرمجي وحلها

افضل محررات الاكواد التي تعمل مع بايثون

1.   Vs code يتميز بقدرته على العمل مع اغلب لغات البرمجة يمكنك تحميله من الموقع الرسمي  على الرابط 

https://code.visualstudio.com/Download

2.   Pycharm مصمم كي يناسب المحترفين والمبتدئين متخصص بلغة بايثون يمكن تحميله من الموقع الرسمي على الرابط

https://www.jetbrains.com/pycharm/

3.   Thonny  محرر اكواد مناسب للمبتدئين يمكن تحميله من الموقع الرسمي على الرابط    

   https://thonny.org

في هذه الدورة سوف نستخدم vscode  كمحرر كواد بعد التنصيب اذهب الى فقرة  الإضافات كما في الصورة التالية وابحث من python  ثم قم بتنصيب إضافة بايثون على المحرر 





مواصفات البرنامج

نقوم قبل كل عمل بتحديد المواصفات والمميزات التي نريد العمل عليها وفي برنامج كتابة المذكرات قمت بتعين 13 خطوة للعمل

1.   استقبال البيانات من المستخدم على شكل عدة اسطر

2.   تعريف دالة تقوم بانشاء مسار التخزين ان لم تجده

3.   حفض البيانات المدخلة على شكل ملف نصي في المسار السابق مع ارفاق التاريخ في نهاية الملف

4.   دالة لفتح الملفات سلمحفوضة وعرض محتواها على الشاشة

5.   دالة لحذف الملفات المحفوضة

6.   إضافة رسائل توضيح للمستخدم بنجاح العمليات السابقة او فشلها

7.   التعامل مع جميع الامتدادات النصية

8.   إضافة الوان للنصوص المطبوعة على سطر الأوامر

9.   إضافة حركة animation للكتابة على الشاشة

10.                  إضافة خاصية استخدام البرنامج اكثر من مرة

11.                  إضافة اغلاق البرنامج

12.                  إضافة نظام عرض المساعدة للمستخدم

13.                  إضافة تعليقات وترتيب الكود

توضيح الكود البرمجي

اولا

# crate a class to catgrized colors

class bcolors:

    Red          = "\033[31m"

    Green        = "\033[32m"

    White        = "\033[97m"

    Blue         = "\033[34m"

انشاء كلاس يحتوي على الوان سطر الأوامر المستخدمة في البرنامج الغرض تسهيل استخدام تلك الألوان  يمكن الاطلاع على قائمة الألوان كاملة على الرابط

https://pkg.go.dev/github.com/whitedevops/colors

ثانيا

# import modules

import os

import os.path

import datetime

import time

import sys

استدعاء المكاتب الطلوبة (لا نحتاج الى تنصيب أي منها)

ثالثا

# defined folders names to save files

date=datetime.datetime.now()

folder1_name=date.strftime("%Y")

folder2_name=date.strftime("%B")

folder3_name=date.strftime("%d")

تعريف عدة متغيرات تحتوي التأريخ لغرض طباعته في الملف ولانشاء مسار الحفض بالشكل التالي سنة /شهر/يوم

رابعا

# function to print with animetion

def typer(string):

    string = list(string)

    for char in string:

        time.sleep(0.1)

        print(char, end="",flush=True)

دالة إضافة الحركة لطباعة الرسائل

خامسا

#function to print help for user

def helper ():

    hlp=bcolors.Blue+"""

    enter ths command to

    save! -->> save text as a file

    open! -->> show the file content on screen

    del!  -->> delete a file

    exit! -->> exit the program

    help! -->> show the help

    """+bcolors.White

    typer(hlp)

دالة طباعة المساعدة لاحظ كيفية تغير الألوان باضافتها الى النص

سادسا

#function to make a path if dont finde it

def path_make():

    if os.getcwd() !=folder1_name+"/"+folder2_name+"/"+folder3_name:

        if not os.path.exists(folder1_name+"/"+folder2_name+"/"+folder3_name):

            os.makedirs(folder1_name+"/"+folder2_name+"/"+folder3_name)

دالة تقوم بصناعة مسار الحفظ اذا لم تجده

سابعا

#function to save files in selcted path

def save (text):

    try:

        text.append(folder1_name+"/"+folder2_name+"/"+folder3_name)

        if os.getcwd() !=folder1_name+"/"+folder2_name+"/"+folder3_name:

            os.chdir(folder1_name+"/"+folder2_name+"/"+folder3_name)

        name=input('enter file name with extention\t:')

        file=open(name,'w')

        for i in text:

            file.write(i+'\n')

        file.close

        mass=bcolors.Green+'saved...'+bcolors.White

        typer(mass)

        os.chdir('C:\\Users\\DELL\\Desktop\\note')

    except:

        mass=bcolors.Red+'dont save retry please...'+bcolors.White

        typer(mass)

دالة تقوم بحفض المذكرة في المسار المحدد

ثامنا

#function to print an old files content

def show_file ():

    try:

        if os.getcwd() !=folder1_name+"/"+folder2_name+"/"+folder3_name:

            os.chdir(folder1_name+"/"+folder2_name+"/"+folder3_name)

        name=input('enter file name with extention\t:')

        file=open(name,'r')

        text=file.read()

        file.close()

        print(text)

        os.chdir('C:\\Users\\DELL\\Desktop\\note')

    except:

        mass=bcolors.Red+'an error retry please...'+bcolors.White

        typer(mass)

دالة تقوم بفتح ملف محفوظ وعرضه على الشاشة

تاسعا

# function to delete files

def delete ():

    try:

        if os.getcwd() !=folder1_name+"/"+folder2_name+"/"+folder3_name:

            os.chdir(folder1_name+"/"+folder2_name+"/"+folder3_name)

        name=input('enter file name with extention\t:')

        print('\a')

        ans=input(bcolors.Red+'do yiu relly want to dlet name.txt...............(enter Y for yse)\n'+bcolors.White)

        if ans=='Y':

            os.remove(name)

            mass=bcolors.Green+'deleted...'+bcolors.White

            typer(mass)

        else:

            pass

        os.chdir('C:\\Users\\DELL\\Desktop\\note')

    except:

        mass=bcolors.Red+'an error retry please...'+bcolors.White

        typer(mass)

دالة تقوم بحذف ملف من الملفات المحفوظة

أخيرا

#maine loop

while True:

    text=[]

    os.chdir('C:\\Users\\DELL\\Desktop\\note')

    path_make()

    print('\nenter text')

    #get multi line input

    while True:

        t=input()

        #detction the command

        if t=='save!':#

            save(text)

            break

        elif t=='del!':

            delete()

            break

        elif t=='open!':

            show_file ()

            break

        elif t=='exit!':

            sys.exit()

            break

        elif t=='help!':

            helper()

            break

        else:

            text.append(t)

هيكل البرنامج الأساسي

صور للنتيجة

 

 تحميل الملخص من هنا

تعليقات

التنقل السريع