-->

آخر الأخبار

جاري التحميل ...

خطة بايثون المكثّفة: من الأساس للذكاء الاصطناعي في 20 أسبوعاً اليوم 001

-1-
-2-

 خطة بايثون المكثّفة: من الأساس للذكاء الاصطناعي في 20 أسبوعاً


خطة بمعدل 6 ساعات يومياً، 5 أيام في الأسبوع (30 ساعة أسبوعياً)، وهدفها النهائي بناء برنامج صيدلية أو سوبر ماركت فيه تحليل وتقارير وذكاء اصطناعي.
قواعد الخطة
1. المدة: 30 ساعة في الأسبوع تقريباً ثلاثة أضعاف الخطة الأولى، فاختصرنا المدة من حوالي سنة لحوالي 20 أسبوعاً (5 شهور). الاحتراف الحقيقي بيكمل بعدها مع المشاريع الحقيقية، لكن في آخر الخطة هتبقى قادر تبني النظام بنفسك.
2. يومين راحة ثابتين (مثلاً الجمعة ويوم تاني). مراجعة خفيفة نص ساعة لو حبيت، وغير كده راحة كاملة. المعلومة بتثبت وقت النوم والراحة، فهم جزء من الخطة مش رفاهية.
3. الكود الأساسي تكتبه بإيدك. استخدم الذكاء الاصطناعي ليشرحلك ويراجع كودك ويكشف أخطاءك، مش يكتبه بدالك. لو نسخت كود مش فاهمه هتسرّع الشكل وتبطّأ التعلّم.
4. كل يوم ينتهي بـ commit على Git وسطرين ملاحظات عن اللي اتعلمته.
5. لو اتأخرت: ما تلغيش المشروع الأسبوعي، شيل الأقل أهمية من القراءة. المشروع هو اللي بيثبّت المعلومة.
6. اختبار الأسبوع: في آخر كل مرحلة اسأل نفسك: أقدر أعيد بناء ده من غير مساعدة؟ لو لأ، خد يوم تكرار قبل المرحلة اللي بعدها.
الجدول اليومي (6 ساعات)
• الفترة 1 (90 دقيقة): تعلّم من الكتاب أو الكورس (قراءة + تجربة الأمثلة).
• استراحة 15 دقيقة: قوم وامشي.
• الفترة 2 (90 دقيقة): تمارين على اللي اتعلمته.
• استراحة 30 دقيقة: أكل ومشي.
• الفترة 3 (90 دقيقة): المشروع الأسبوعي.
• استراحة 15 دقيقة.
• الفترة 4 (90 دقيقة): المشروع، وآخر 30 دقيقة: مراجعة وGit وملاحظات.
ملحوظة: 6 ساعات تركيز عالي كتير على المخ. لو حسيت إن آخر فترة بقت ضعيفة، خليها قراءة خفيفة أو مراجعة بدل كود جديد.
الضهر
القعدة الطويلة هي أكبر خطر في الخطة دي. اضبط مذكّر القيام على 45 دقيقة عمل ثم قيام ومشي، وبدّل وضع الجلوس والوقوف لو عندك مكتب مناسب. لو ظهر ألم أو تنميل مستمر، وقّف وكلّم دكتور قبل ما تكمل.



الأسبوع 1: مراجعة الأساسيات

القراءة: Python Crash Course الجزء الأول (الأساسيات) بسرعة، وAutomate the Boring Stuff للملفات والـ regex.



• اليوم 1:


 المتغيرات والأنواع والنصوص والـ lists والـ dicts والحلقات (تمارين كتير).







المتغيرات والأنواع والنصوص والـ lists والـ dicts والحلقات

المتغيرات والأنواع والنصوص والـ lists والـ dicts والحلقات

الأسبوع 1: مراجعة الأساسيات — الدرس 1

ملخص الدرس

الخطوات بالترتيب

  1. (90 د) اتعلّم: المتغيرات والأنواع والنصوص والـ lists والـ dicts والحلقات — المصدر: Python Crash Course (الجزء الأول) + Automate the Boring Stuff
  2. (90 د) حلّ التمرين بإيدك من غير ما تنسخ (التمرين تحت)
  3. (90 د) مشروع الأسبوع: أداة سطر أوامر لإدارة مخزون (إضافة/حذف/بحث وحفظ في JSON)
  4. (60 د) كمّل المشروع + (30 د) مراجعة وGit commit وسطرين ملاحظات

التمرين

اكتب برنامج يقرأ قائمة أسماء أصناف ويطبع كل صنف برقمه، ثم يعدّ كم صنف يبدأ بنفس الحرف (استخدم dict).

تلميح

dict مفتاحه الحرف الأول، وكل مرة زوّد العدّاد بـ get(key, 0) + 1.

مراجع للبحث

الحل

import json

# Global list to store all items (each item is a dictionary)
inventory = []


def load_data():
  """Loads inventory from a JSON file if it exists."""
  global inventory  # ضرورية هنا فقط لأننا بنعمل assignment (=) للستة
  try:
    with open("inventory.json", "r") as file:
      inventory = json.load(file)
  except (FileNotFoundError, json.JSONDecodeError):
    inventory = []


def save_data():
  """Saves the current inventory list to a JSON file."""
  # مش محتاجين global هنا لأننا بنقرا محتوى الـ inventory بس من غير (=)
  try:
    with open("inventory.json", "w") as file:
      json.dump(inventory, file, indent=4)
  except Exception as e:
    print(f"Error saving data: {e}")


def add_item():
  """Adds a new item (dictionary) to the inventory list[cite: 1]."""
  print("\n--- Add New Item ---")
  item_id = input("Enter Item ID: ")
  name = input("Enter Item Name: ")

  try:
    quantity = int(input("Enter Quantity: "))
    price = float(input("Enter Price: "))
  except ValueError:
    print("Invalid input for quantity or price! Please enter numbers.\n")
    return

  item = {"id": item_id, "name": name, "quantity": quantity, "price": price}
  inventory.append(item)  # بنعدل محتويات اللستة بـ append من غير (=)
  save_data()
  print("Item added successfully!\n")


def search_item():
  """Searches for an item by its ID in the inventory list[cite: 1]."""
  # مش محتاجين global هنا، اللستة معروفة وتقدر تقرأها مباشرة
  if not inventory:
    print("\nInventory is empty. Nothing to search.\n")
    return

  search_id = input("\nEnter Item ID to search: ")

  for item in inventory:
    if item["id"] == search_id:
      print("\n--- Item Found ---")
      print(f"ID: {item['id']}")
      print(f"Name: {item['name']}")
      print(f"Quantity: {item['quantity']}")
      print(f"Price: {item['price']}\n")
      return

  print("Item not found!\n")


def delete_item():
  """Deletes an item from the inventory list by its ID[cite: 1]."""
  if not inventory:
    print("\nInventory is empty. Nothing to delete.\n")
    return

  delete_id = input("\nEnter Item ID to delete: ")

  for item in inventory:
    if item["id"] == delete_id:
      inventory.remove(item)  # تعديل محتويات بـ remove من غير (=)
      save_data()
      print("Item deleted successfully!\n")
      return

  print("Item not found!\n")


def view_inventory():
  """Displays all items currently in the inventory list[cite: 1]."""
  if not inventory:
    print("\nInventory is empty.\n")
    return

  print("\n--- Current Inventory ---")
  for item in inventory:
    print(
        f"ID: {item['id']} | Name: {item['name']} | Qty: {item['quantity']} |"
        f" Price: {item['price']}"
    )
  print()

def item_statistics():
  """Counts and displays how many items start with each letter."""
  if not inventory:
    print("\nInventory is empty. No statistics to show.\n")
    return

  stats = {}

  for item in inventory:
    name = item["name"]
    if name:
      # بناخد أول حرف ونحوله لـ Capital عشان التوحيد
      first_letter = name[0].upper()

      # لو الحرف متسجل قبل كده بنزود 1، لو لأ بنبدأ بـ 1
      if first_letter in stats:
        stats[first_letter] += 1
      else:
        stats[first_letter] = 1

  print("\n--- Inventory Statistics (Starting Letters) ---")
  # بنعرض النتائج مرتبة حسب الحرف
  for letter in sorted(stats.keys()):
    print(f"Letter '{letter}': {stats[letter]} items")
  print()


  
def main():
  load_data()

  while True:
    print("=== Inventory Management System ===")
    print("1. Add Item")
    print("2. Search Item")
    print("3. Delete Item")
    print("4. View All Items")
    print("5. View Statistics (Letter Count)")  # الخيار الجديد
    print("6. Exit")

    choice = input("Enter your choice (1-6): ")

    if choice == "1":
      add_item()
    elif choice == "2":
      search_item()
    elif choice == "3":
      delete_item()
    elif choice == "4":
      view_inventory()
    elif choice == "5":
      item_statistics()  # استدعاء دالة الإحصائيات
    elif choice == "6":
      print("Exiting program. Goodbye!")
      break
    else:
      print("Invalid choice. Please try again.\n")


if __name__ == "__main__":
  main()
-3-
-4-

التعليقات



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

إتصل بنا

جميع الحقوق محفوظة

مدونة كورس 7

2021