برنامه « ماتریس اولیت بندی کار ها » با پایتون

منبع سایت چطور
منبع سایت چطور

از زمان های قدیم، ( الان در سال 3425 شمسی هستیم ) در دوران کدسانس، تعدادی برنامه نویس در شهر پایتونستان زندگی می کردند. در آن زمان کار های برنامه نویسی بسیار زیاد بود و سر برنامه نویس های پایتونستان خیلی شلوغ بود؛ در نتیجه در مدیریت کار های خود بسیار دچار مشکل بودند.

روزی از این روزگار ها، برنامه نویسی به نام سیمی کالن، به این فکر افتاد که از توانایی برنامه نویسی خودش برای حل مشکل مدیریت کار ها و زمان چاره ای پیدا کند.

بعد از جستجو های فراوان در اینترنت ذغالی آن دوران، با یک مطلب در سایت چطور برخورد کرد و تصمیم گرفت که آن را با زبان محبوب پایتون که با گذشت چندین قرن مریخی هنوز هم محبوب است،‌پیاده سازی کند.

تیم تحقیقاتی ما طی اکتشاف هایی، توانسته است داده های مهمی از ژوپیتر نوت بوک آقای سیمی کالن پیدا کند که قصد داریم تا در ادامه این مطلب، کد های نوشته شده این برنامه نویس را بررسی کنیم.



در مرحله اول آقای کالن نیاز داشته است که تعدای کتابخانه به برنامه خود اضافه کند.

import numpy as np ( کتابخانه محاسبات ریاضی )
import matplotlib.pyplot as plt ( کتابخانه مصور سازی داده ها )
from bidi.algorithm import get_display ( لازم برای نوشته های فارسی )
import arabic_reshaper ( لازم برای نوشته های فارسی )

احتمالا آن زمان، برای نوشتن متون فارسی در ژوپیتر نوت بوک مشکلاتی بوده است که آقای کالن این تابع را برای اصلاح آن نوشته است.

def make_farsi_text(x): ( تابعی برای نمایش صحیح فارسی )
        reshaped_text = arabic_reshaper.reshape(x)
        farsi_text = get_display(reshaped_text)
        return farsi_text

همچنین طبق بررسی ها فهمیده ایم که آقای کالن عاشق زیبایی و هنر بوده است و برای کد های خود یک سری کد برای زیبایی خروجی محصول خود نوشته است.

font_labels = { 'family': 'B Nazanin',
              'color':  'white',
              'weight': 'normal',
               'size': 20,
                }
font_text = { 'family': 'B Nazanin',
             'color':  'black',
             'weight': 'normal',
             'size': 15,
             }

ظاهرا محصول آقای کالن نیاز به تنظیمات اولیه ای داشته است که با بازنویسی کد و اجرا کردن آن خواهیم فهمید چه استفاده ای داشته است.

plt.grid(True) ( خط کشی کردن نمودار )
plt.xticks([i for i in range(11)], color='#95bcbe') ( درجه بندی محور طول ها )
plt.yticks([i for i in range(11)], color='#95bcbe') ( درجه بندی محور عرض ها )
plt.plot([5, 5], [10, 0], color='gray') ( رسم یک خط عمودی برای تقسیم بندی نمودار )
plt.plot([10, 0], [5, 5], color='gray') ( رسم یک خط افقی برای تقسیم بندی نمودار )

در قسمت بعدی مشخص شده است که آقای کالن ورودی های کد را دریافت و در سه لیست دسته بندی کرده است.

tasks, significance, effort = [ ], [ ], [ ]
for i in range(int(input('چندتا کار برای انجام داری ؟  '))):
    tasks.append(input('اسم کار را وارد کن : '))
    significance.append(int(input('میزان اهمیت کار را وارد کن : ')))
    effort.append(int(input('میزان تلاش لازم برای این کار را وارد کن : ')))
    plt.text(effort[i], significance[i], make_farsi_text(tasks[i]), fontdict=font_text)

همچنین آقای کالن یک فرد آینده نگر بوده و برای محصول خود یک راهنما در کد خود گذاشته است.

plt.plot([0], [0], label=make_farsi_text('برد های سریع'), c='purple') ( نمایش برچسب ها )
plt.plot([0], [0], label=make_farsi_text('برنامه های بی ثمر'), c='#13c2b3') ( نمایش برچسب ها )
plt.plot([0], [0], label=make_farsi_text('برنامه های مهم'), c='green') ( نمایش برچسب ها )
plt.plot([0], [0], label=make_farsi_text('برنامه های وقت پرکن'), c='red') ( نمایش برچسب ها )
plt.xlabel(make_farsi_text('میزان تلاش مورد نیاز'), fontdict=font_labels) (  برچسب محور طول ها )
plt.ylabel(make_farsi_text('میزان اهمیت'), fontdict=font_labels)  ( برچسب محور عرض ها )
plt.title(make_farsi_text('ماتریس اولویت بندی'), fontdict=font_labels) ( عنوان نمودار )
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.) (  تعیین موقعیت رهنما ) 
plt.show() ( نمایش نهایی نمودار )

سر انجام بازنویسی کد آقای کالن به پایان رسید. تیم تحقیقات ما بی صبرانه مشتاق است که خروجی این نمودار ببیند.

ورودی های کد
ورودی های کد

برای مثال ما شش تا کار برای انجام دادن انتخاب و آن ها را طبق عکس بالا وارد میکنیم. نتیجه را می توانید در عکس زیر مشاهده کنید. واقعا شگفت انگیز است.

نتیجه کد
نتیجه کد



اگر اولویت بندی کاراهتون سخته، می تونید با قاطی کردن یکم تکنولوژی این کار رو برای خودتون راحت تر و جالب تر کنید. برای اینکه بیشتر درمورد « ماتریس اولویت بندی کارها » بدونید، میتونید از اینجا بخونید.

لایک یادتون نره!!!! ممنون