المحاضرة الثامنة عشر
تطبيق عملي (برنامج كتابة يوميات)
في هذه المحاضرة سنقوم بأنشاء برنامج لكتابة يوميات وحفضها حيث سنستخدم بعض الأدوات التي تم شرحا في المحاضرات السابقة كذلك سنتعلم كيفية تغير تنسيق الخطوط في سطر الأوامر وكيفية اختيار محرر أكواد مناسب للعمل
كيفية اختيار محرر أكواد
في المحاضرات السابقة
كنا نستخدم محرر الاكواد الأساسي الذي يتم تنصيبه مع لغة بايثون بشكل تقائي اما
الان سنقوم بتنصيب محرر اكواد يسهل العمل علينا حيث يكون اختيار محرر الاكواد من حيث
1. الراحة الشخصية في العمل
2. الاكمال التلقائي
3. تتبع الأخطاء بشكل
تلقائي
4. توفير خاصية debug والتي تقوم بتنفيذ البرنامج وعرض النواتج خطوة بخطوة مما يساعد على التعرف على الأخطاء المنطقية في الكود البرمجي وحلها
افضل محررات الاكواد التي تعمل مع بايثون
1. Vs code يتميز بقدرته على العمل مع اغلب لغات البرمجة يمكنك تحميله من الموقع الرسمي على الرابط
https://code.visualstudio.com/Download
2. Pycharm مصمم كي يناسب المحترفين والمبتدئين متخصص بلغة بايثون يمكن تحميله من الموقع الرسمي على الرابط
https://www.jetbrains.com/pycharm/
3. Thonny محرر اكواد مناسب للمبتدئين يمكن تحميله من الموقع الرسمي على الرابط
في هذه الدورة سوف نستخدم 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)
هيكل البرنامج الأساسي
تعليقات
إرسال تعليق