پایان مسیر
آزمون نهایی
این آزمون دو بخش دارد. بخش اول ۲۰ سؤال از کل دوره است. بخش دوم مهمتر است: نوشتن کل برنامه از حفظ در VS Code و تست آن.
بخش ۱: کلاس Shop از حفظ (در مرورگر)
تمرین
کلاس کامل
بدون نگاه کردن، importها، FILE و کلاس کامل Shop را بنویس.
Ctrl + Enter
دیدن راهحل (اول خودت تلاش کن)
import json import os FILE = 'shop_data.json' # در VS Code: مسیر کنار برنامه با __file__ class Shop: def __init__(self): self.products = {} self.sales = [] self.load() def save(self): with open(FILE, 'w', encoding='utf-8') as f: json.dump({'products': self.products, 'sales': self.sales}, f, ensure_ascii=False, indent=2) def load(self): if os.path.exists(FILE): try: with open(FILE, 'r', encoding='utf-8') as f: data = json.load(f) self.products = data.get('products', {}) self.sales = data.get('sales', []) except (OSError, json.JSONDecodeError, AttributeError): self.products, self.sales = {}, [] def add(self, name, buy, sell, qty): if not name or name in self.products: raise ValueError('نام خالی یا کالای تکراری است') if not all(0 <= x < float('inf') for x in (buy, sell, qty)): raise ValueError('عدد منفی یا نامعتبر مجاز نیست') self.products[name] = {'buy': buy, 'sell': sell, 'qty': qty} self.save() def edit(self, name, buy, sell, qty): if name not in self.products: raise ValueError('کالا پیدا نشد') if not all(0 <= x < float('inf') for x in (buy, sell, qty)): raise ValueError('عدد منفی یا نامعتبر مجاز نیست') self.products[name] = {'buy': buy, 'sell': sell, 'qty': qty} self.save() def delete(self, name): if name not in self.products: raise ValueError('کالا پیدا نشد') del self.products[name] self.save() def sell(self, name, qty): if name not in self.products: raise ValueError('کالا پیدا نشد') if qty <= 0: raise ValueError('تعداد باید مثبت باشد') product = self.products[name] if qty > product['qty']: raise ValueError('موجودی کافی نیست') product['qty'] -= qty self.sales.append({'name': name, 'qty': qty, 'total': qty * product['sell']}) self.save() def report(self): return sum(s['qty'] for s in self.sales), sum(s['total'] for s in self.sales)
بخش ۲: کل برنامه از حفظ (در VS Code)
یک فایل خالی باز کن، تایمر بگذار و کل برنامه را بدون نگاه بنویس. بعد اینها را چک کن:
آزمون نهایی
برای گذراندن این درس حداقل ۸۰٪ جواب درست لازم است. هر چند بار خواستی میتوانی دوباره امتحان بدهی.