در این سوال قصد داریم مساحت چهار شکل دایره، مستطیل، مربع و مثلث رو حساب کنیم.
از شما میخواهیم که یک تابع به نام get_func(ls)
بنویسید که یک لیست از رشتهها (که نام اشکال مختلف دو بعدی هستند) را ورودی میگیرد و برای هر رشته تابع محاسبهگر مساحت آن را به دست آورده و به همان ترتیب لیست ورودی در لیستی جدید ذخیره کرده و خروجی میدهد.
برای مثال:
خروجی کد بالا:
تابع get_func
را در فایل solution.py
پیاده سازی کنید و فایل کد خود را زیپ و ارسال کنید.
فرض کنید که در یک فایل پایتون چند کلاس وجود دارد و به مجموعه کل آن کلاسها میگوییم. گراف جهت دار را از روی مجموعه به این شکل میسازیم که راس به راس یال دارد اگر و فقط اگر کلاس از کلاس به صورت مستقیم ارث برده باشد. برای مثال به کد زیر دقت کنید:
گراف کلاسهای بالا:
در این مثال و از ارث بردهاست و کلاس هم از کلاس و ارث برده است.
حال کد زیر را در نظر بگیرید
کلاس C
و B
تابع f
را از کلاس A
به ارث بردهاند و کلاس D
این تابع را از این دو کلاس به ارث بردهاست. پس دو مسیر D-B-A
و D-C-A
برای صدا شدن تابع f
قابل تصور است که در این سوال (مانند قانون خود مفسر پایتون) در ارثبری کلاسی که زودتر (چپتر در پرانتز جلوی تعریف کلاس) نوشته شده را مقدم در نظر میگیریم. یعنی مسیر D-C-A
را برای d.f
در نظر میگیریم.
در کد زیر برای مثال:
در اینجا تابع g
هم در کلاس B
و هم در کلاس C
وجود دارد ولی طبق مفسر پایتون، مسیر مورد نظر در این سوال مسیر D-C
برای d.g
است.
حال لیست کلاسها در اختیار شما قرار میگیرد و شما باید با ایجاد تغییراتی در کلاسها شرایطی را ایجاد کنید که با صدا کردن هر تابع. مسیر صدا شدن آن تابع در شی کلاس Record
که به شما ورودی داده میشود ذخیره شود.
این کار در قالب یک تابع به نام rearrange(ls, rec)
باید صورت بگیرد که ls
لیست کلاسهاست و rec
آن شی مورد نظر از کلاس Record
هست که باید مسیرها در آن ذخیره شود.
rec
خالی شود.object
ارث نبرد.برای درک بهتر به کد زیر و خروجی آن دقت کنید.
خروجی کد بالا:
Record
:🔗کد این کلاس در این لینک قرار دارد. (لازم نیست این فایل را همراه راهحل ارسال کنید)
این کلاس در کنار فایل ارسالی شما قرار میگیرد و شما میتوانید آن را import
کنید. این کلاس دارای سه تابع زیر است.
add_node(node)
: این تابع یک عضو گرفته (که در این سوال باید یک کلاس باشد) و آن را به لیست مسیر اضافه میکند.get_path_list()
: این تابع لیست مسیر را خروجی میدهد.refresh()
: این تابع مسیر ذخیره شده را خالی میکند.تابع rearrange(ls, record)
را در فایل solution.py
پیاده سازی کنید و فایل solution.py
را زیپ کرده و ارسال کنید.
این سوال دارای ۴ تست است که ۲ تست آن یک مسیر ساده، یک تست گرافی مانند گراف مثال زده شده و تست دیگر یک گراف پیچیده میباشد. اگر برای مثال فقط برای مسیرها حل کردید جواب خود را ارسال کنید، بخشی از نمره به شما تعلق میگیرد.
احتمالا شما هم تا به حال از یک فروشگاه آنلاین خرید کردهاید. در هر فروشگاه آنلاین یک سبد خرید یا cart
وجود دارد که محصولات انتخاب شده در آن نمایش داده میشوند و برای هر محصول میتوان بعضی خصوصیات آن محصول مانند تعداد، رنگ و ... را تغییر داد.
حال ما میخواهیم یک فروشگاه آنلاین بنویسیم و قسمتی از پروژه را نیز نوشتهایم و از شما میخواهیم در نوشتن فرمِ سبد خرید به ما کمک کنید. پروژهی فعلی را میتوانید از این لینک دانلود کنید.
همانطور که میبینید، در پروژه یک app
به نام shop
و در آن دو مدل Color
و Product
وجود دارد.
در فایل forms.py
یک فرم با نام CartForm
وجود دارد که شما باید این کلاس را به شکل زیر تکمیل کنید.
توجه: در ورودی kwargs
تابع __init__
یک کلید به نام items
وجود دارد که لیست product
ها را نشان میدهد.
شما باید به ازای هر product
ای که به فرم شما پاس داده میشود، دو فیلد تعداد و رنگ را به شکل زیر قرار دهید:
IntegerField
باشد و نام آن number_<product.id>
باشد که در آن <product.id> آیدی آن محصول است. برای این فیلد، باید مقدار پیشفرض ۱ را در نظر بگیرید. و label
آن هم باید نام محصول باشد.ChoiceField
میباشد و نام آن color_<product.id>
است که در آن <product.id> آیدی آن محصول است. این فیلد لیستی از رنگهای موجود برای محصول خاص را نشان میدهد. مقدار label
این فیلد هم باید 'color'
باشد. تضمین میشود که هیچ محصولی بدون رنگ نیست.موارد خواسته شده باید در تابع __init__
به self.fields
اضافه شوند. همچنین به ازای هر دو مورد بالا مقدار required
باید False
باشد.
توجه کنید که هر دو این فیلدها در نهایت حتما باید مقدار داشته باشند بدین معنی که اگر در request.POST
داده برای یک فیلد فرستاده نشد، باید خودتان برایش مقداری قرار دهید. برای فیلدهای "تعداد" مقدار ۱ و برای فیلدهای "رنگ"، کوچکترین رنگ موجود در لیست رنگهای آن کالا (از نظر الفبایی) باید قرار بگیرد.
حال یک درخواست POST با داده های خالی {}
ارسال میشود. در این صورت باید بعد از ایجاد فرم و صدا شدن تابع ()is_valid، متغییر cleaned_data به شکل زیر باشد:
زیرا رنگ blue
از نظر الفبایی از دو رنگ دیگر کوچکتر است.
در فایل views.py
یک تابع به نام make_json
قرار دارد که cleand_data فرم مورد نظر را به شکل json با فرمت خاص برمیگرداند. نیازی نیست شما در این تابع تغییری ایجاد کنید یا از آن استفاده کنید.
فایل آپلودی
یک فایل zip. که درون آن یک پوشه shop
وجود دارد که شامل یک فایل forms.py
است. توجه کنید در صورتی که فایلهای اضافی ارسال کنید، حذف خواهند شد.
امروزه سایتهای سفارش آنلاین غذا بسار زیاد و همهگیر شدهاند، و مخصوصا شادی زیادی را برای ما برنامه نویسها فراهم کردهاند. حالا یکی از این سایتها تصمیم گرفته است برای بهتر کردن خدماتش و کمک به مشتریهای سایت در انتخاب غذا، بخش کامنت را به سایتش اضافه کند تا کاربرانی که غذایی را سفارش میدهند بتوانند نظر خودشان را راجع به غذا بگویند تا کاربران بعدی بتوانند بهتر و راحت تر غذای خودشان را انتخاب کنند.
این سایت سفارش آنلاین آنقدر سرش گرم تحویل غذاها و رسیدگی به سفارشهای مشتریهایش هست که وقت نمیکند این قابلیت را به سایتش اضافه کند و از شما میخواهد که در این کار کمکش کنید. سورس کد پروژه را میتوانید از اینجا دانلود کنید.
همانطور که مشاهده میکنید، در فایل models.py
یک مدل به نام Food
وجود دارد که شامل سه فیلد name
، price
و description
است که به ترتیب نام، قیمت و توضیحات یک غذا را نشان میدهند.
همچنین یک فایل template نیز نوشته شده است که توسط view ی menu_view
رندر شده و لیست همه غذاها را نشان میدهد. که این view با استفاده از آدرس (url) /menu
صدا زده میشود.
شما باید در این صفحه بخش کامنتها را به شکل زیر اضافه کنید:
نام و تاریخ لازم نیست حتما نسبت به هم بدین شکل باشند، یعنی میتوانید نام و تاریخ را در سطرهای جدایی نمایش دهید یا ...
"Please log in to leave a comment."
را در این صفحه نمایش دهید./menu
به نمایش درآید و کامنت ثبت شده در صفحه باشد."your comment successfully submitted."
باید در صفحه به نمایش در بیاید که اگر صفحه دوباره refresh شود پیام نیز از صفحه حذف میشود.توجه کنید که اگر پاسخ شما تنها به بخشی از قسمتهای سوال پاسخ دهد، همان بخش از نمره را نیز دریافت میکنید.
در این سوال شما برای انجام کارهای گفته شده ورژن 1.8.0 از کتابخانه django-contrib-comments
را در اختیار دارید و باید از آن استفاده کنید. مستندات این کتابخانه در لینک زیر قابل مشاهده است:
فایلی که باید آپلود کنید یک فایل zip. است که درون آن یک پوشه order_food
وجود دارد که شامل دو فایل models.py
و views.py
است و همچنین یک فایل به نام menu.html
که درون دایرکتوری order_food/templates/order_food
قرار دارد. توجه کنید در صورتی که فایلهای اضافی ارسال کنید، حذف خواهند شد. ساختار فایلهای ارسالی باید به شکل زیر باشد.
توجه کنید که شما باید تنها فایل menu.html
را تغییر دهید.
در این سوال توانایی مدلسازی شما سنجیده میشود. در پروژهی زیر مدلسازی یک سامانه پرداخت آنلاین را میبینید.
در سامانهی توصیف شده تعدادی کاربر خریدار و تعدادی فروشنده وجود دارد، و تعدادی تراکنش که بین یک فروشنده و یک خریدار صورت میگیرد. اولین کاری که باید بکنید این است که با مشاهدهی مدل، اهداف بخشهای آن را خودتان متوجه شوید!
حال ما میخواهیم قابلیت امکان تخفیف را به نوع bill
از تراکنش در سامانه اضافه کنیم. یعنی تنها تراکنشهایی که از نوع bill
هستند قرار است بتوانند تخفیف داشته باشند، و در نهایت قرار است این امکان کاملا پیادهسازی شود و در سامانه استفاده شود.
شما باید مدلهای سامانهی جدید را طراحی کنید. برای این طراحی برای هر تغییری کاملا آزاد هستید؛ شما میتوانید مدلهای فعلی را تغییر دهید و همچنین شما میتوانید هر چند مدلی که خواستید به آن اضافه کنید.
در کنار تغییراتی که میدهید، در صورت نیاز، توضیحی راجع به دلیل آن نیز بنویسید. این توضیحات را هم در کنار کدتان ارسال کنید. میتوانید این توضیحات را در کد بصورت کامنت بنویسید، و یا در فایلی جداگانه قرار دهید.
در نهایت یک فایل zip که شامل موارد گفته شده است برای این سوال ارسال کنید. برای ساختار فایل zip ارسالی و موارد داخل آن نیز محدودیتی ندارید.