alt
صفحه 2 از 2 نخستنخست 12
نمایش نتایج: از 11 به 14 از 14

موضوع: برنامه‌نویسی به زبان پایتون (Python)

  1. 62,753 امتیاز ، سطح 77
    69% کامل شده  امتیاز لازم برای سطع بعدی 497
    53.0% فعالیت
    جایزه ها:
    برگزار کننده مسابقه عکاسی با موضوع وسایل کمکیبهترین کاربر به انتخاب دور اول شورا
    تاریخ عضویت
    1348/10/11
    محل سکونت
    تهران
    نوشته ها
    1,213
    امتیاز
    62,753
    سطح
    77
    تشکر
    9,676
    تشکر شده 6,321 بار در 1,259 ارسال
    دنبال شونده‌ها
    0
    دنبال کننده‌ها
    0

    دستورات شرطی

    #11 1393/11/30, 03:48
    سلام

    امیدوارم خوب و سلامت باشید و تا اینجا مطالب مفید بوده باشد

    در این قسمت درباره عبارت شرطی (اگه چی بشه چی ها) صحبت می‌شود.
    زیاد پیش می‌آید که بخواهیم در برنامه شرطی را بررسی کنیم و اگر آن شرط برقرار باشد، برنامه کاری را برایمان انجام دهد. برای مثال، فرض کنید بخواهیم از کاربر اطلاعاتی راجع به نوع لباسش بپرسیم؛ به این صورت می‌شود:
    جنسیت شما چیست؟ خانم یا آقا؟
    اگر (خانم) معمولا مقنعه سر می‌کنید یا روسری؟
    اگر (مرد) معمولا با کلاه بیرون می‌روید یا بدون کلاه؟

    برای این که بخواهیم چنین کاری را در زبان پایتون انجام دهیم، از دستوز if (به معنای اگر) به شکل زیر استفاده می‌کنیم.


    if shart:
    1

    lllldastoore yek

    به جای واژه shart، آن شرطی را که می‌خواهیم اگر درست (TRUE) باشد، دستور یک اجرا شود، می‌گذاریم. در پایتون لازم نیست شرط حتما داخل پرانتز باشد ولی اگر باشد هم مشکلی نیست. همچنین، بعد از نوشتن شرط، گذاشتن علامت : اجباری است. دستوراتی که اگر شرط برقرار باشد اجرا می‌شوند، باید با چهار فاصله نسبت به شروع if نوشته شوند. موقع نوشتن برنامه در محیط پایتون، خودش فاصله را به طور خودکار در نظر می‌گیرد اما اگر در یک فایل متنی معمولی می‌نویسید به این نکته دقت داشته باشید.

    سؤال: نتیجه این دو تکه برنامه چه تفاوتی دارد؟

    x=-10.0
    if x>0: 1
    llllprint x,'Adadi Mosbat Ast'1
    llllprint 'Tamoom Shod'1


    و

    x=-10.0
    if x>0: 1
    llllprint x,'Adadi Mosbat Ast'1
    print 'Tamoom Shod'1


    پاسخ: چون x عددی کوچک‌تر از صفر است پس شرط برقرار نیست و نادرست (False) است. پس دستوراتی که به if مربوطند اجرا نخواهند شد. در تکه برنامه اول، هر دو دستور print برای دستور if اند. چرا؟ چون با فاصله نسبت به شروع if نوشته شده‌اند. پس
    ، خروجی تکه برنامه اول چیزی نخواهد بود. اما در تکه برنامه دوم، دومین print با شروع if فاصله ندارد و بنابراین، جزء دستورات if محسوب نمی‌شود. یعنی پس از اچرای تکه برنامه دوم، عبارت Tamoom Shod در خروجی چاپ خواهد شد.

    تعداد دستوراتی که می‌توانیم برای یک if بنویسیم محدودیتی ندارد اما حتما باید دست کم یکی باشد و فاصله هم رعایت شود.

    برای شرط‌ها از تمام روش‌های مقایسه که در قسمت پیش گفته شد، می‌توان استفاده کرد.

    اگر بخواهیم دستوری بدهیم به این صورت که اگر چی، فلان، وگرنه بهمان، دستور به این صورت خواهد بود:



    if shart: 1
    lllldastoore yek
    else: 1
    lllldastoore do
    در اینجا اگر shart درست باشد، دستور یک اجرا می‌شود و اگر درست نباشد دستور دو اجرا خواهد شد. گذاشتن : بعد از else واجب است.


    تمرین یک:
    برنامه‌ای بنویسید که از کاربر عدد صحیحی را بگیرد و اگر آن عدد بین یک تا ده بود، بگوید عدد شما بین یک تا ده است.

    تمرین دو:
    برنامه ای بنویسید که عددی صحیح را از کاربر بگیرد و اگر عدد زوج بود، بگوید زوج است و گرنه بگوید فرد است.
    (برای تشخیص زوج بودن باید بررسی شود که باقیمانده عدد تقسیم بر دو صفر است یا نه... باقیمانده تقسیم x بر y در زبان پایتون به صورت x%y است.)


    در جلسه بعد، شکل‌های دیگر دستور شرطی را بررسی می‌کنیم.

    خلاصه مباحث این جلسه:
    * برای بررسی شرط اگر ... از دستور if ... : ... 1 و برای اگر... وگرنه ... از دستور if...:... else: ... 1 استفاده می‌کنیم.
    * جلوی if بعد از نوشتن شرط و همینطور بعد از نوشتن else حتما باید علامت : گذاشت.
    * دستورات مربوط به if (یا else) باید در خطهای بعدی و با فاصله نسبت به شروع if یا else نوشته شوند.
    * شرط‌های if می‌توانند داخل پرانتز باشند یا نباشند.


    پ.ن. (ِیک)
    سؤالاتتون را یا به طور خصوصی بپرسید یا از این تاپیک استفاده کنید.

    پ.ن. (دو)
    دوست داشتید می‌تونید پاسخ تمرین‌ها را خصوصی بفرستید.

    پ.ن. (سه)
    اگر برنامه را نصب نکردید، می‌توانید از این لینک (طرز استفاده) استفاده کنید.


    پ.ن. (چهار)
    در نوشتن کدهای برنامه، چون اینجا پاراگراف انگلیسی نداره مجبورم از کاراکترهای اضافی استفاده کنم و رنگشون رو سفید کنم تا شکل نوشتن درست باشه. به خاطر نامرتبیش عذرمی‌خوام.

    بسی سپاس از همراهی‌تون. با آرزوی موفقیت
    8 کاربر مقابل از نارون عزیز به خاطر این پست مفید تشکر کرده اند. eBRAHIMV, hadi123, Mohammad, montazer65, Niloof@r, soheilaa, مجید110, نیلوفر
    ===============================
    اللهم صل علی محمد و آل محمد و عجل فرجهم
    ===============================

    امام علی (ع): اندیشیدن به خوبیها، آدمی را به انجام دادن آن برمی‌انگیزاند.
    ===============================
    نارون آنلاین نیست.

  2. 62,753 امتیاز ، سطح 77
    69% کامل شده  امتیاز لازم برای سطع بعدی 497
    53.0% فعالیت
    جایزه ها:
    برگزار کننده مسابقه عکاسی با موضوع وسایل کمکیبهترین کاربر به انتخاب دور اول شورا
    تاریخ عضویت
    1348/10/11
    محل سکونت
    تهران
    نوشته ها
    1,213
    امتیاز
    62,753
    سطح
    77
    تشکر
    9,676
    تشکر شده 6,321 بار در 1,259 ارسال
    دنبال شونده‌ها
    0
    دنبال کننده‌ها
    0

    ادامه دستورات شرطی

    #12 1393/12/16, 05:32
    سلام و خدا قوت به همه دوستان

    در این قسمت، ادامه دستورات شرطی گفته می‌شود. پیش از شروع، پاسخ تمرین‌ها را توضیح می‌دهم.

    در تمرین یک، خواسته شده بود تا برنامه‌ از کاربر عدد صحیحی را بگیرد و اگر آن عدد بین یک تا ده بود، بگوید عدد شما بین یک تا ده است. پاسخ تمرین به صورت زیر است:



    ابتدا باید مطابق مثال‌های پیش، از کاربر عدد را بگیریم و چون خروجی تابع raw_input رشته کاراکتر است، آن را با تابع int تبدیل به عدد صحیح کنیم و بعد بررسی کنیم که آیا این عدد بین یک و ده است یا نه. برای مقایسه در اینجا می‌توانستیم به این صورت هم عمل کنیم ده > x > یک ولی استفاده از and بهتر است، چون در بعضی زبان‌ها امکان چنین مقایسه‌ای وجود ندارد.
    اگر عدد بین یک تا ده باشد، شرط برقرار است و دستور if اجرا می‌شود. این هم کد تمرین یکم

    در تمرین دوم، خواسته شده بود که
    عددی صحیح را از کاربر بگیرد و اگر عدد زوج بود، بگوید زوج است و گرنه بگوید فرد است. پاسخ تمرین به صورت زیر است:


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


    اما درس جدید:
    فرض کنیم که بخواهیم چند شرط را بررسی کنیم. در این حالت از دستورات شرطی زنجیره‌ای استفاده می‌کنیم. مثلا، می‌خواهیم براساس سن، کتابی را به کاربر پیشنهاد دهیم:
    از کاربر می‌پرسیم: چند سال داری؟
    بعد بسته به عددی که کاربر وارد می‌کند، عبارتی را برایش چاپ می‌کنیم:
    اگر کمتر از شش سال بود: کتاب شب به خیر ماه را بخوان!
    وگرنه اگر بین هفت تا نه سال بود: کتاب آرزوهای گمشده مرد کلاه دودی را بخوان!
    وگرنه اگر بین ده تا دوازده سال بود: کتاب اما تو قول داده بودی را بخوان!
    وگرنه: کتاب با تو می‌گویم خدا را بخوان!

    برای نوشتن چنین برنامه‌ای از if... elif....else استفاده می‌کنیم. elif کوتاه شده else if است، معنی وگرنه اگر را می‌دهد و شرط جدیدی را مطرح می‌کند.
    کد برنامه بالا در زبان پایتون به صورت زیر است:



    می‌بینید که اگر شرط if برقرار نباشد، شرط بعدی بررسی می‌شود و همینطور تا اینکه اگر هیچ کدام از شرطها برقرار نبودند، دستور مربوط به else اجرا می‌شود. (کد مثال)
    دستور else می‌توانست نباشد و ما می‌توانیم با if و elif فقط چند شرط مختلف را بررسی کنیم. محدودیتی در تعداد elif ها وجود ندارد.
    هر کدام از این شرطها به ترتیب بررسی می‌شوند و به محض این که یکی از آنها درست بود، دیگر بقیه دستورات اجرا نمی‌شوند.

    حالا ممکن است بخواهیم در صورت برقراری یک شرط، شرط دیگری را بررسی کنیم. مثلا از کاربر می‌پرسیم: کودک و نوجوانی یا بزرگسال؟ کودک و نوجوان (1) و بزرگسال (2)
    بعد می‌پرسیم: خانمی یا آقا؟ خانم (1) و آقا (2)
    بعد بسته به پاسخ‌ها سؤالی می‌پرسیم:
    اگر کودک و نوجوان بود، آنگاه
    اگر خانم بود: می‌تونی پرستار خوبی بشی!
    اگر آقا بود: می‌تونی کشتی‌گیر خوبی بشی!
    اگر بزرگسال بود، آنگاه،
    اگر خانم بود: کت و دامن بهت میاد!
    اگر آقا بود: کت و شلوار بهت میاد!

    برای این کار می‌توانیم از شرط‌های تو در تو استفاده کنیم. شرطها می‌توانند هم در دستورات if هم elif و هم else بیایند. کد مثال بالا به صورت زیر است (کد مثال):




    البته برنامه را می‌توان به صورت‌های مختلف نوشت. همانطور که می‌بینید، در داخل if دستور if دیگری استفاده شده است. برای if های تو در تو هم محدودیتی نیست. فقط باید برنامه منطقی نوشته شود، چون همانطور که گفته شد، اگر شرطی درست باشد، بقیه شرطها بررسی نمی‌شوند.

    در قسمت بعد، بحث دستورات شرطی را جمع‌بندی می‌کنیم.

    خلاصه مباحث این جلسه:
    * گاهی لازم است چند شرط بررسی شوند، در این حالت از دستورات شرطی زنجیره‌ای استفاده می‌کنیم (if شرط elif شرط یا if شرط elif شرط else ...)
    * محدودیتی در تعداد elifها وجود ندارد.
    * گاهی می‌خواهیم پس از بررسی یک شرط، در صورت برقراری، شرط دیگری را بررسی کنیم. در این حالت، از دستورات شرطی تو در تو استفاده می‌گنیم.


    پ.ن. (ِیک)
    سؤالاتتون را یا به طور خصوصی بپرسید یا از این تاپیک استفاده کنید.

    پ.ن. (دو)
    دوست داشتید می‌تونید پاسخ تمرین‌ها را خصوصی بفرستید. تشکر می‌کنم از دوست عزیزم، خانم motazer65 که پاسخ تمرین‌ها را فرستادند. 1000 امتیاز دیگر به ایشان تعلق گرفت (تا حالا 2000 امتیاز)

    پ.ن. (سه)
    اگر برنامه را نصب نکردید، می‌توانید از این لینک (طرز استفاده) استفاده کنید.


    پ.ن. (چهار)
    مثال‌ها فقط برای نشان دادن کاربرد دستوراتند و گاهی توجیه منطقی ندارند.

    خیلی ممنونم از دوستان. موفق باشید
    6 کاربر مقابل از نارون عزیز به خاطر این پست مفید تشکر کرده اند. eBRAHIMV, hadi123, Mohammad, montazer65, مجید110, نیلوفر
    ===============================
    اللهم صل علی محمد و آل محمد و عجل فرجهم
    ===============================

    امام علی (ع): اندیشیدن به خوبیها، آدمی را به انجام دادن آن برمی‌انگیزاند.
    ===============================
    نارون آنلاین نیست.

  3. 62,753 امتیاز ، سطح 77
    69% کامل شده  امتیاز لازم برای سطع بعدی 497
    53.0% فعالیت
    جایزه ها:
    برگزار کننده مسابقه عکاسی با موضوع وسایل کمکیبهترین کاربر به انتخاب دور اول شورا
    تاریخ عضویت
    1348/10/11
    محل سکونت
    تهران
    نوشته ها
    1,213
    امتیاز
    62,753
    سطح
    77
    تشکر
    9,676
    تشکر شده 6,321 بار در 1,259 ارسال
    دنبال شونده‌ها
    0
    دنبال کننده‌ها
    0

    پایان دستورات شرطی

    #13 1394/02/17, 18:22
    سلام دوستان

    در ادامه مبحث دستورات شرطی، به دستوری می‌رسیم که یک جورهایی مثل سوپاپ اطمینان عمل می‌کند.
    کد زیر را در نظر بگیرید. این کد عدد صحیحی را از شما می‌گیرد و توان دوم آن را به شما می‌دهد:



    وقتی آن را اجرا کنید و عددی وارد کنید، نتیجه‌ای مشابه زیر می‌بینید:


    Salaam! Lotfan Yek Adad Benevis? 5
    25


    اما اگر چیزی وارد نکنید یا مثلا به جای عدد، حرف وارد کنید و دکمه اینتر را بزنید با پیغام خطا مواجه خواهید شد، مثلا، به جای عدد، حرف h را می‌نویسم و خطای زیر ظاهر می‌شود:

    Salaam! Lotfan Yek Adad Benevis? h

    Traceback (most recent call last):
    File "Mesal_1_940217.py", line 4, in <module>
    adad=int(adad)
    ValueError: invalid literal for int() with base 10: 'h
    '

    پیش‌تر گفته بودیم که تابع int رشته کاراکتری که عدد باشد یا خود عدد را به عدد صحیح تبدیل می‌کند.
    برای رفع این خطای احتمالی در پایتون، دستور try/except در نظر گرفته شده است و وقتی استفاده می‌شود که شما خطای محتمل را می‌دانید و می‌خواهید در صورت وقوع آن خطا، پیامی که شما در نظر دارید، چاپ شود.
    این دستور دو قسمت دارد، در بخش try شما می‌گویید که اگر همه چیز درست بود، دستورات بخش try اجرا شود. دستوراتی نیز زیر بخش except نوشته می‌شود که فقط در صورت وجود خطا در بخش try اجرا خواهند شد.
    try A except B بدین معناست که A را امتحان کن، اگر خطا داد، B را. شکل کلی دستور به صورت زیر است:




    پس، مثال بالا را می‌توان بدین ترتیب تغییر داد:



    حالا اگر باز هم به اشتباه مثل بالا حرف h را بنویسم، نتیجه زیر ظاهر خواهد شد:


    Salaam! Lotfan Yek Adad Benevis? h
    Lotfan Adad Vered Koind!

    مزیت این کار این است که کاربر برنامه، متوجه خطای خود می‌شود و دوباره برای اجرا تلاش می‌کند.

    تمرین: ابتدا از کاربر، بپرسید که در چه مقطعی درس می‌خواند: کارشناسی و پایین‌تر (1)، کارشناسی ارشد (2)، دکترا (3)
    سپس، معدل او را بپرسید و آن را از مقیاس 0 تا 20 به مقیاس A تا F تبدیل کنید. هم از دستورات if و هم try/except استفاده کنید. (امتیاز تمرین: 2000)
    تبدیل مقیاس به ترتیب زیر است:
    کارشناسی و پایین‌تر
    17 تا 20 = A
    14 تا 16.9 = B
    12 تا 13.9 = C
    10 تا 11.9 = D
    کمتر از ده = F

    کارشناسی ارشد
    17 تا 20 = A
    14 تا 16.9 = B
    12 تا 13.9 = C
    کمتر از 12 = F

    دکترا
    17 تا 20 = A
    14 تا 16.9 = B
    کمتر از 14 = F

    در قسمت بعد، مبحث تابع را آغاز خواهیم کرد.

    خلاصه مباحث این جلسه:
    * برای آگاهی کاربر از خطای احتمالی، می‌توان از دستور try/except استفاده کرد.
    * اگر خطایی نباشد، دستورات try کامل اجرا می‌شود ولی در صورت بروز خطا در بخش try، دستورات بخش except اجرا خواهد شد.

    پ.ن. (ِیک)
    سؤالاتتون را یا به طور خصوصی بپرسید یا از این تاپیک استفاده کنید.

    پ.ن. (دو)
    اگر برنامه را نصب نکردید، می‌توانید از این لینک (طرز استفاده) استفاده کنید.



    موفق باشید

    4 کاربر مقابل از نارون عزیز به خاطر این پست مفید تشکر کرده اند. eBRAHIMV, montazer65, مجید110, نیلوفر
    ===============================
    اللهم صل علی محمد و آل محمد و عجل فرجهم
    ===============================

    امام علی (ع): اندیشیدن به خوبیها، آدمی را به انجام دادن آن برمی‌انگیزاند.
    ===============================
    نارون آنلاین نیست.

  4. 62,753 امتیاز ، سطح 77
    69% کامل شده  امتیاز لازم برای سطع بعدی 497
    53.0% فعالیت
    جایزه ها:
    برگزار کننده مسابقه عکاسی با موضوع وسایل کمکیبهترین کاربر به انتخاب دور اول شورا
    تاریخ عضویت
    1348/10/11
    محل سکونت
    تهران
    نوشته ها
    1,213
    امتیاز
    62,753
    سطح
    77
    تشکر
    9,676
    تشکر شده 6,321 بار در 1,259 ارسال
    دنبال شونده‌ها
    0
    دنبال کننده‌ها
    0

    تابع

    #14 1394/04/05, 11:15
    سلام دوستان

    در این مطلب راجع به تابع‌ها صحبت می‌شود. اما ابتدا، پاسخ تمرین پیش:

    تمرین این بود که برنامه از کاربر مقطع تحصیلی و نمره را بپرسد و متناظر نمره را در معیار A تا F بگوید. می‌توان برنامه را به شکل‌های مختلف نوشت. یکی از آنه
    ا به صورت زیر است:



    که نتیجه اچرای آن به صورت زیر خواهد بود:



    این هم فایل برنامه


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

    یک سری تابع‌های از پیش تعریف شده وجود دارند که از بعضی از آنها استفاده کردیم؛ مثلا تابع raw_input که ورودی آن رشته کاراکتر و خروجی هم رشته کاراکتر است، یا تابع int که ورودی را به عدد صحیح تبدیل می‌کند یا تابع float که ورودی را به عدد اعشاری تبدیل می‌کند. با طرز استفاده از این‌ها قبلا آشنا شدیم و هر جا که در ادامه لازم باشد، تابع‌های جدید را معرفی می‌کنیم.

    بخشی از تابع‌هایی که در کتابخانه پایتون وجود دارند، درون بسته‌هایی گذاشته شده که قبل از استفاده از این تابع‌ها باید بسته را باز کنیم. این کار را با دستور import انجام می‌دهیم. مثلا اگر بخواهیم از تابع‌های ریاضی استفاده کنیم، اول بسته ریاضی را صدا می‌زنیم:
    import math
    حالا، بسته باز شده است. برای اینکه از یک تابع درون این بسته استفاده کنیم، اول باید اسم بسته را بگوییم بعد یک نقطه می‌گذاریم و بعد اسم تابع را می‌نویسیم؛ مثلا، برای استفاده از تابع جذر:
    math.sqrt(2)1
    اسم تابع جذر sqrt است و math هم اسم بسته‌ای است که این تابع در آن قرار دارد.
    یا مثلا math.pi عدد پی را نمایش خواهد داد:



    تمرین: برنامه از کاربر یک عدد را بگیرد و آن را در عدد پی ضرب کند و جذر آن را به عنوان خروجی چاپ کند.

    در جلسه بعد، روش نوشتن تابع جدید توضیح داده خواهد شد.

    خلاصه مباحث این جلسه:
    * تابع‌ها برنامه‌های از پیش نوشته شده‌ای اند که می‌توان هنگام نوشتن برنامه از آنها استفاده کرد.
    * بعضی از تابع‌ها در بسته‌هایی گذاشته شده‌اند که باید قبل از استفاده از آنها، بسته را با دستور import باز کرد.
    * هنگام استفاده از تابع‌های درون بسته، اول استم بسته را می‌نویسیم بعد نقطه و بعد اسم تابع، مثلا: math.sqrt
    * امکان نوشتن تابع جدید برای برنامه‌نویس وجود دارد.

    پ.ن. (ِیک)
    سؤالاتتون را یا به طور خصوصی بپرسید یا از این تاپیک استفاده کنید.

    پ.ن. (دو)
    اگر برنامه را نصب نکردید، می‌توانید از این لینک (طرز استفاده) استفاده کنید.



    موفق باشید

    5 کاربر مقابل از نارون عزیز به خاطر این پست مفید تشکر کرده اند. Amino, eBRAHIMV, HoPe, montazer65, مجید110
    ===============================
    اللهم صل علی محمد و آل محمد و عجل فرجهم
    ===============================

    امام علی (ع): اندیشیدن به خوبیها، آدمی را به انجام دادن آن برمی‌انگیزاند.
    ===============================
    نارون آنلاین نیست.

صفحه 2 از 2 نخستنخست 12

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •