کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش ورودی و خروجی در پایتون


آموزش ورودی و خروجی در برنامه نویسی پایتون


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

قالب بندی تفننی خروجی (fancier output formatting) در برنامه نویسی Python


تا اینجا با دو روش نوشتن مقادیر آشنا شده ایم: عبارات اصطلاحی و تابع print() . ( روش سوم استفاده از متد write() اشیای فایل است. به فایل خروجی استاندارد به عنوان sys.stdout می توان ارجاع داد. برای اطلاعات بیشتر در این زمینه بخش مرجع کتابخانه (Library Reference) را ببینید.) شما اغلب خواهان کنترل بیشتری روی قالب خروجی خود هستید تا اینکه فقط خروجی را به صورت مقادیر جدا شده با فاصله چاپ کنید.

در این جا چندین روش برای قالب بندی خروجی ارائه شده است.

  • برای استفاده از حروف رشته قالب بندی شده، یک رشته را با f یا F قبل از باز کردن گیومه نقل قول یا نقل قول سه تایی شروع کنید. درون این رشته، می توانید یک عبارت پایتون را بین کاراکترهای { و } بنویسید که بتواند به مقادیر متغیر ها و حروف ارجاع دهد.
                >>> year = 2016
                >>> event = 'Referendum'
                >>> f'Results of the {year} {event}'
                'Results of the 2016 Referendum'
            

  • متد str.format() مربوط به رشته ها نیاز به تلاش دستی بیشتری دارد. شما همچنان برای تعیین این که کجا یک متغیر جایگزین خواهد شد و نیز برای ارائه دستورات قالب بندی با جزییات از { و } استفاده خواهید کرد، اما شما همچنین باید اطلاعات را به صورت قالب بندی شده ارائه کنید.
                >>> yes_votes = 42_572_654
                >>> no_votes = 43_132_495
                >>> percentage = yes_votes / (yes_votes + no_votes)
                >>> '{:-9} YES votes  {:2.2%}'.format(yes_votes, percentage)
                ' 42572654 YES votes  49.67%'
            

  • در نهایت، برای ایجاد هر طرحی که تصورش را می کنید، می توانید با استفاده از عملیات بخش بندی(slicing) و ادغام رشته ها، تمام کارها برای مدیریت رشته ها را خودتان انجام دهد. نوع رشته دارای متدهایی برای اعمال عملیات مفید برای لایه بندی رشته ها به یک عرض ستون داده شده است.

زمانی که به خروجی تفننی احتیاج ندارید و فقط یک نمایش سریع از برخی از متغیر ها برای اهداف اشکال زدایی می خواهید، می توانید با استفاده از توابع repr() یا str() هر مقداری را به رشته تبدیل کنید.

تابع str() برای بازگرداندن نمایش مقادیری که نسبتا برای انسان قابل خواندن هستند در نظر گرفته شده است، در حالی که repr() برای تولید نمایشی که توسط مفسر قابل خواندن باشد در نظر گرفته شده است (یا اگر هیچ نگارش برابری نباشد، یک SyntaxError را اعمال می کند).

برای اشیایی که هیچ نمایش خاصی برای مصرف انسان ندارند، str() مقدار مشابه repr() را باز می گرداند. مقادیر بسیاری، مانند اعداد و ساختارهایی مانند لیست ها و دیکشنری ها، در زمان استفاده از هر یک از توابع ذکر شده، نمایش یکسانی دارند. رشته ها به طور خاص، دو نمایش متمایز دارند. تعدادی مثال:

    >>> s = 'Hello, world.'
    >>> str(s)
    'Hello, world.'
    >>> repr(s)
    "'Hello, world.'"
    >>> str(1/7)
    '0.14285714285714285'
    >>> x = 10 * 3.25
    >>> y = 200 * 200
    >>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '...'
    >>> print(s)
    The value of x is 32.5, and y is 40000...
    >>> # The repr() of a string adds string quotes and backslashes:
    ... hello = 'hello, world\n'
    >>> hellos = repr(hello)
    >>> print(hellos)
    'hello, world\n'
    >>> # The argument to repr() may be any Python object:
    ... repr((x, y, ('spam', 'eggs')))
    "(32.5, 40000, ('spam', 'eggs'))"

ماژول string در بر دارنده کلاس template است که روشی دیگر برای جایگزینی مقادیر با رشته ها را پیشنهاد می کند، استفاده از فضا نگهدار هایی مانند $x و جایگزینی آنها با مقادیری از یک دیکشنری، اما کنترل کمتری نسبت به قالب بندی ارائه می کند.

قالب بندی تفننی خروجی (fancier output formatting) در برنامه نویسی Python


حروف رشته قالب بندی شده در زبان پایتون

حروف رشته قالب بندی شده(به اختصار f-strings) به شما این امکان را می دهد تا با استفاده از پیشوند سازی یک رشته با f یا F و نوشتن عبارات به صورت {expression} مقادیر عبارات پایتون را درون یک رشته اضافه کنید.

. یک تشخیص دهنده قالب اختیاری می تواند عبارت را دنبال کند. این مورد، کنترل بیشتری را روی چگونگی قالب بندی مقادیر فراهم می کند. مثال زیر عدد π را تا سه رقم بعد از اعشار گرد می کند.

    >>> import math
    >>> print(f'The value of pi is approximately {math.pi:.3f}.')
    The value of pi is approximately 3.142.

پاس دادن یک عدد صحیح بعد از ':' باعث می شود آن مکان به اندازه حداقل تعداد کاراکتر عریض شود. این برای ترسیم ستون ها مفید است.

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
    >>> for name, phone in table.items():
    ...     print(f'{name:10} ==> {phone:10d}')
    ...
    Sjoerd     ==>       4127
    Jack       ==>       4098
    Dcab       ==>       7678
    

از سایر اصلاح کننده ها برای تبدیل مقدار، پیش از قالب بندی می توان استفاده کرد. '!a' ، ascii() را اعمال می کند. '!s' ، str() را اعمال می کند و '!r' ، repr() را اعمال می کند.

    >>> animals = 'eels'
    >>> print(f'My hovercraft is full of {animals}.')
    My hovercraft is full of eels.
    >>> print(f'My hovercraft is full of {animals!r}.')
    My hovercraft is full of 'eels'.

آموزش متد format() رشته در Python


: کاربرد اولیه متد str.format() به صورت زیر است:

    >>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
    We are the knights who say "Ni!"

براکت ها ({}) و کاراکتر های درون آنها (فیلدهای فرمت) توسط اشیای پاس داده شده به متد str.format() جایگزین می شوند. از اعداد درون براکت ها می توان برای ارجاع به مکان شی پاس داده شده به متد str.format() استفاده کرد.

    >>> print('{0} and {1}'.format('spam', 'eggs'))
    spam and eggs
    >>> print('{1} and {0}'.format('spam', 'eggs'))
    eggs and spam

اگر از آرگومان های کلیدی در متد str.format() استفاده شده باشد، مقادیر آنها با استفاده از نام آرگومان، به آنها ارجاع داده می شود.

    >>> print('This {food} is {adjective}.'.format(
        ...       food='spam', adjective='absolutely horrible'))
        This spam is absolutely horrible.

آرگومان های مکانی و کلمه کلیدی می توانند به صورت دلخواه ترکیب شوند.

    >>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
    other='Georg'))
The story of Bill, Manfred, and Georg.

اگر یک رشته قالب بندی واقعا بلندی دارید که نمی خواهید آن را تقسیم کنید، خوب است در صورت توان متغیر ها را به جای مکان بر اساس نام برای قالب بندی ارجاع دهید. این کار به سادگی با پاس دادن دیکشنری (dict) و استفاده از براکت های [] برای دسترسی به کلید ها انجام می شود.

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
    >>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
    ...       'Dcab: {0[Dcab]:d}'.format(table))
    Jack: 4098; Sjoerd: 4127; Dcab: 8637678

همچنین می توان با پاس دادن جدول به عنوان آرگومان های کلمه کلیدی با نماد ** ، این کار را انجام داد.

    >>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
    >>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
    Jack: 4098; Sjoerd: 4127; Dcab: 8637678

این امر به خصوص در ترکیب با تابع داخلی vars() مفید است، که یک دیکشنری شامل همه متغیر های محلی را باز می گرداند. به عنوان یک مثال، خطوط زیر یک مجموعه مرتب و هم راستا از ستون هایی از اعداد صحیح و مربع (توان 2) و مکعب (توان 3) آن ها را تولید می کند.

    >>> for x in range(1, 11):
    ...     print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
    ...
     1   1    1
     2   4    8
     3   9   27
     4  16   64
     5  25  125
     6  36  216
     7  49  343
     8  64  512
     9  81  729
    10 100 1000

آموزش قالب بندی رشته به صورت دستی در Python


در اینجا همان جدول مربع ها و مکعب ها را می بینید که به صورت دستی قالب بندی شده است:

    >>> for x in range(1, 11):
    ...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
    ...     # Note use of 'end' on previous line
    ...     print(repr(x*x*x).rjust(4))
    ...
     1   1    1
     2   4    8
     3   9   27
     4  16   64
     5  25  125
     6  36  216
     7  49  343
     8  64  512
     9  81  729
    10 100 1000
    

(توجه داشته باشید که فاصله موجود بین ستون ها با استفاده از روش عملکرد print() اضافه شده است. این تابع همیشه بین آرگومان های خود فاصله اضافه می کند.)

متد str.rjust() مربوط به اشیای رشته، یک رشته را در یک فیلد با عرض داده شده از سمت راست تنظیم می کند. این تنظیمات با اعمال فاصله از سمت چپ توسط عمل لایه بندی(padding) انجام می شود.

متد های مشابه str.ljust() و str.center() نیز وجود دارند. این متدها هیچ چیزی نمی نویسند، آنها فقط یک رشته جدید را باز می گردانند. اگر رشته ورودی زیادی بلند باشد، آنها رشته را کوتاه نمی کنند، اما آن را بدون تغییر باز می گردانند.

این طرح خروجی ستون ها را به هم خواهد ریخت اما معمولا بهتر از این است که درباره مقدار دروغ بگویید. ( اگر واقعا کوتاه شدن را می خواهید، همیشه می توانید عملگر slice را اضافه کنید، مثل x.ljust(n)[:n]) یک متد دیگر به نام str.zfill() وجود دارد که یک رشته عددی را با صفر از سمت چپ لایه بندی می کند. این متد علامت ها جمع و تفریق را می فهمد.

    >>> '12'.zfill(5)
    '00012'
    >>> '-3.14'.zfill(7)
    '-003.14'
    >>> '3.14159265359'.zfill(5)
    '3.14159265359'
    

آموزش قالب بندی قدیمی رشته در Python


از عملگر % نیز می توان برای قالب بندی رشته استفاده کرد. این عملگر آرگومان سمت چپ را مانند یک رشته قالب بندی sprintf()-style تفسیر می کند تا به آرگومان سمت راست اعمال شود. سپس رشته حاصل شده از عملیات قالب بندی را باز می گرداند. برای مثال:

    >>> import math
    >>> print('The value of pi is approximately %5.3f.' % math.pi)
    The value of pi is approximately 3.142.

1403/05/29 5027 709
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...