برنامهای بنویسید که عددی مانند را از کاربر دریافت کند و در صورتی که خاصیت کامل بودن را داشته باشد، یعنی مجموع مقسومعلیههای آن (غیر از خودش) برابر با آن عدد باشد، YES
و در غیر این صورت NO
را چاپ کند.
در یک خط عدد به شما داده میشود.
چنانچه عدد کامل بود YES
در غیراینصورت NO
چاپ کنید.
کارها:
تعریف پروژه:
در این پروژه یک مدلِ کتاب داریم. این مدل دو تابع borrow_book
و return_book
دارد. اولی برای قرض گرفتن کتاب و دومی برای پس دادن کتاب استفاده میشود.
پروژه اولیه را از اینجا دانلود کنید.
از شما خواسته شده که تسک زیر را انجام دهید.
/get_book_users/<book_id>/
پاسخی مانند زیر دریافت شود که تاریخچه زمانی افرادی است که تاکنون کتاب را قرض گرفتهاند. تاریخ به صورت iso_format
نشان داده شود که تاریخ قرض گرفته شدن کتاب را نشان میدهد. در صورتی که کتابی وجود نداشت لیست خالی برگردانده شود.آدرس /borrow_book/<book_id>/<user_name>/
صدا زده شد پاسخهای زیر برگردانده شود.
مقادیر status_code (ترتیب مهم است):
آدرس /return_book/<book_id>/
صدا زده شد پاسخهای زیر برگردانده شود.
مقادیر status_code (ترتیب مهم است):
روش ارسال:
توجه کنید که manage.py
باید مستقیما در ریشه فایل zip قرار بگیرد.
کارها:
__repr__
تعریف پروژه: برنامهای برای زمانبندی کارها به زبان پایتون نوشته شده است (لینک گیتهاب) میخواهیم بدون آنکه کدی از کتابخانه اصلی را تغییر دهیم(توجه داشته باشید که کد را از لینک زیر دریافت کنید و کاری به پروژه در آدرس گیتهاب نداشته باشید زیرا تغییرات جزئی در کد کتابخانه انجام شده است.) با امکاناتی که در اختیار داریم (فایل wrapper.py) کارایی کد پایتون نوشته شده را تغییر دهیم.
پروژه اولیه را از این آدرس دریافت کنید.
توجه: تنها فایل wrapper.py را میتوانید تغییر دهید.
شرح کارهایی که باید انجام دهید به صورت زیر است:
datetime(2010, 1, 6, 13, 16)
هستیم و تابع should_run صدا زده شد باید خروجی این تابع حتما False
باشد.every(A).to(B)
داریم تابع در هر N ثانیه/دقیقه/... به صورتی که A <= N <= B
است اجرا میشود شما آنرا به B <= N <= A+B
تغییر دهید.__repr__
برای Job هیچگاه کلمه Every
به کار نرود به جای آن کلمه Har
به کار رود.فایل ارسالی: فایل ارسالی شما باید به صورت زیر باشد.
کارها:
تعریف پروژه: در این سوال قصد داریم تا مهارت خواندن و تغییر و برطرف کردن باگ های کد های موجود را بسنجیم. بدین منظور یک پروژه موجود را از Github درنظر گرفتهایم. شما میتوانید از این لینک پروژه را دانلود کنید و از آن به عنوان مبنا توسعه کد استفاده کنید. این فایل یک ورژن خاص از این پروژه در گیت هاب است. برای توضیحات بیشتر و توضیح نحوه اجرای پروژه به این صفحه مراجعه کنید.
ابتدا کد ها را خوانده و به فهم نسبی از پروژه برسید. در این سوال قصد داریم در قسمت Questions کار کنیم.
این قسمت از سایت، یک سایت پرسش و پاسخ مانند سایت Stack overflow است که در آن پرسش و پاسخ صورت میگیرد.
در این قسمت اگر ابهامی در سوال وجود داشته باشد، افرادی که میخواهند به سوال پاسخ دهند باید بتوانند سوال خود را بپرسند تا کسی که سوال را مطرح کرده است ابهام سوال را برطرف کند. برای این کار در سایت Stack overflow بخشی برای گذاشتن کامنت روی سوال ها وجود دارد که در سیستم مورد بحث سوال در نظر گرفته نشده است.
حال از شما میخواهیم این قابلیت را به سایت اضافه کنید.
میخواهیم یک url وجود داشته باشد تا کامنت های خود را به آن ارسال کنیم. آدرس Url باید به شکل زیر باشد.
question
و comment
باید وجود داشته باشد که به ترتیب id سوالی که روی آن کامنت میگذاریم و متن کامنت است.تمام کامنت های مربوط به یک سوال باید در صفحهی مربوط به سوال، یعنی url /questions/<question-id>
نمایش داده شوند.
username
کسی که کامنت گذاشته نیز نمایش یابد. فایل آپلودی
کل پروژه را zip کرده و ارسال کنید. فقط توجه کنید که فایل manage.py
باید مستقیما در ریشهی فایل zip باشد و در هیچ پوشه دیگری نباشد. یعنی ساختار فایل zip باید مانند زیر باشد.
کارها:
تعریف پروژه: در این سوال قصد داریم تا مهارت خواندن و تغییر کد های موجود را بسنجیم. بدین منظور یک پروژه موجود را از Github درنظر گرفتهایم. شما میتوانید از این لینک پروژه را دانلود کنید و از آن به عنوان مبنا توسعه کد استفاده کنید. این فایل یک ورژن خاص از این پروژه در گیت هاب است. برای توضیحات بیشتر و توضیح نحوه اجرای پروژه به این صفحه مراجعه کنید.
ابتدا کد ها را خوانده و به فهم نسبی از پروژه برسید.
مشاورین برندیگ کوئرا پیشنهاد دادند که کاربران را مجبور کنیم در نام کاربری خود از کلمه quera
استفاده کنند. بنابراین ما از شما میخواهیم پس از خواندن کد های پروژه تغییرات زیر را در آن اعمال کنید.
۱. تمام کاربران جدید هنگام ثبتنام باید ازین امر مطلع شوند. بنابراین رشتهی Usernames must contain the word "Quera"
را عینا در کنار فیلد مربوط به username نمایش دهید تا کاربر قبل از وارد کردن نام کاربری برای خود از این امر مطلع شود.
۲. اگر کاربری username ای را وارد کرد که شرط مورد نظر راجع به آن صدق نمیکرد، بعد از ارسال فرم، یک خطا با رنگ قرمز و با متن دقیقا Username does not contain quera
به کاربر نمایش داده شود.
۳. در تمام حالت هایی که برای فیلد username خطا گرفته میشود باید به شکل زیر یک نام کاربری معتبر جدید به کاربر پیشنهاد دهید. نام کاربری ای معتبر است که شامل کلمه quera
باشد، در سیستم موجود نباشد و فقط شامل کارکتر های مجاز (حروف A تا Z انگلیسی به صورت بزرگ و کوچک، اعداد، نقطه و underline) باشد.
برای بدست آوردن نام کاربری برای پیشنهاد باید مراحل الگوریتم زیر را به ترتیب انجام دهید:
اگر نام کاربری وارد شده توسط کاربر شامل یک یا بیشتر کارکتر غیر مجاز بود، کارکتر های غیر مجاز را از رشته ورودی حذف کنید. برای مثال رشتهی 'ab+bas' یک نام کاربری با کارکتر غیرمجاز '+'
است که خروجی این مرحله رشته abbas
است.
اگر نام کاربری بدست آمده از مرحله قبل شامل کلمه quera
نبود، کلمه quera_
را به اول نام کاربری پیشنهادی اضافه کنید. برای مثال خروجی این مرحله رشته quera_abbas
خواهد شد.
اگر نام کاربری که هماکنون حتما شامل کلمه quera
است، در سیستم از قبل وجود داشت، کار های زیر را انجام دهید:
_1
را به انتهای نام اضافه کنید. اگر در سیستم وجود داشت، _2
را اضافه کنید و به همین ترتیب تا نامی یافت شود که معتبر باشد.نکته مهم: توجه کنید که اگر در انتهای نامی که کاربر وارد کرده است یک underline و عدد وجود داشت ولی در سیستم موجود بود، شما نباید یک underline و عدد دیگر به آن اضافه کنید، بلکه باید تنها عدد را تغییر دهید و کوچکترین عددی را بگذارید که در سیستم موجود نیست! الگوریتم بالا این نکته را تضمین میکند.
Suggest:
و در بین دو کارکتر '*'
در فرم ثبتنام زیر فیلد مربوطه نشان داده شود. برای مثال:
اگر کاربر نام کاربری را Ali
وارد کرد که دارای Quera نیست، سیستم نام quera_Ali
را در صورتی که قبلا در سیستم وجود نداشت به کاربر پیشنهاد دهد.
اگر کاربر Quera10
وارد کرد که قبلا وجود داشت سیستم میتواند کلمه Quera10_1
را پیشنهاد دهد ولی اگر کاربر رشته Quera_10
را وارد کرد و در سیستم موجود بود شما نباید نام Quera_10_1
را پیشنهاد دهید، بلکه باید نام Quera_1
را در صورت معتبر بودن پیشنهاد دهید.
اگر کاربر رشته Quera__
را وارد کرد که از قبل در سیستم موجود بود، سیستم باید نام Quera__1
را پیشنهاد دهد. همچنین برای رشته Quera__1
نیز رشته Quera__2
را پیشنهاد دهید.
همچنین اگر کاربر کلمه ای مانند ab+bas
وارد کرد که شامل کارکتر غیرمجاز است، سیستم ممکن است نام quera_abbas_1
را در صورت معتبر بودن پیشنهاد دهد. به تصویر زیر توجه کنید:
quera
حساس باشد. یعنی اگر کلمه QuErA
نیز در نامکابری بود نباید خطایی گرفته شود.User with this Username already exists
یا برای نام کاربری هایی که کارکتر های غیر مجاز دارند رشته Enter a valid username
نشان داده میشود که این کارایی نباید از بین برود.فایل آپلودی
کل پروژه یا تنها فایل هایی که تغییر داده اید را zip کرده و ارسال کنید. فقط توجه کنید که فایل manage.py
باید مستقیما در ریشهی فایل zip باشد و در هیچ پوشه دیگری نباشد.
توجه کنید که اگر همه فایل ها را ارسال نمیکنید ساختار فایل ها را تغییر ندهید. یعنی ساختار فایل فشرده حتما باید مانند زیر باشد.