مدیر دیتابیس و مهندس داده
String formating and print in python 3
در این آموزش قصد دارم String formating و امکانات مختلفی که print تو پایتون ۳ داره را آموزش بدم. من در این آموزش از نسخه ۳.۷.۳ پایتون استفاده می کنم پس با من همراه باشید :)
اولین مثالی که میخوام بزنم ساده ترین کاری هستش که این تابع می تونه انجام بده و اونم چاپ یک رشته هستش
print ("Hello, World!")
Hello, World!
برای استفاده از تابع پرینت تو پایتون ۳ بر خلاف پایتون ۲ شما باید مثل مثال بالا از پرانتز استفاده بکنید.در مثال بالا شما می تونید به جای "" از ' ' هم استفاده بکنید ولی این نکته رو یادتون باشه که اگه از سینگل کوتیشن استفاده بکنید و داخل اون رشته ای که میخواهید چاپ کنید یدونه سینگل کوتیشن هم وجود داشته باشه به مشکل بر می خورید. مثال زیر مشکل ایجاد شده رو نشون میده:
print('Don't cry')
File "<stdin>", line 1
print('Don't cry')
^
SyntaxError: invalid syntax
اما برای حل مشکل بالا می تونید از دو روش زیر استفاده بکنید:
print('Don\'t cry')
Don't cry
یا
print("Don't cry")
Don't cry
با print می تونید چندتا رشته بهم بچسبونید و یک جا چاپ کنید:
print("Python" + " is " + " a " + " greate language")
Python is a greate language
در مثال زیر این تابع میاد مقدار یک متغییر چاپ می کنه:
age = 24
print (age)
24
اگه بخوام مقدار متغییر بالارو با یه متن چاپ کنم به شکل زیر عمل می کنم:
print ("My age is: ", age)
My age is: 24
به مثال زیر توجه کنید:
print ("My age is: " + age)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
در مثال بالا بر خلاف مثال قبلی شما نمی تونید یک عدد به یک رشته concatenate (الحاق،پیوستن) کنید اگه میخواهید اینکار بکنید می تونید از روش زیر استفاده بکنید:
print ("My age is: " + str(age))
My age is: 24
در مثال بالا به صورت موقت متغییر age که از نوع int یا عدد صحیح هستش را به str تبدیل کردم تا بشه در تابع پرینت جهت چاپ استفاده کرد.
در مثال زیر تابع پرینت داخل یک حلقه استفاده کردم تا مقادیر یک لیست دونه به دونه نشون بده:
lst = [4, 5, 8, 8, 3]
for _ in range(0, len(lst)):
print(lst[_])
4
5
8
8
3
همچنین توی تابع پرینت شما می تونید از توابع دیگه برای کارهای مختلف استفاده بکنید، مثلا چاپ یک رشته به صورت حروف بزرگ و ... .مثلا در مثال زیر میاییم بیشترین عددی که تکرار شده رو چاپ می کنیم:
lst = [4, 5, 8, 8, 3]
print(max(set(lst), key = lst.count))
8
اگه می خواهید مقادیر لیست بالا بدون استفاده از حلقه و با فاصله از هم چاپ بشن میشه از روش زیر استفاده کرد:
print(*lst)
4 5 8 8 3
اگه می خواهید به جای اینکه اعداد با فاصله از هم جدا کنید، مثلا از کاما برای جدا کردن اعداد استفاده کنید می تونید از روش زیر استفاده بکنید:
print(*lst, sep=', ')
4, 5, 8, 8, 3
print(*lst, sep=' > ')
4 > 5 > 8 > 8 > 3
همچنین می تونید از روش زیر استفاده بکنید:
for i in lst:
print(i, end='. ')
4. 5. 8. 8. 3. 4. 5. 8. 8. 3.
اگه می خواهید مقدار یک متغییر یا رشته را چندبار چاپ کنید می تونید به روش زیر عمل کنید:
name = 'milad'
print (name * 3)
miladmiladmilad
در مثال بالا name حاوی رشته ای است که قرار است چاپ بشود و 3 هم مربوط به تعداد دفعاتی است که رشته قرار است تکرار بشود.
خوب اما برسیم به مبحث String formatting
فکر کنید ما میخواهیم خط زیر در پایتون با استفاده از تابع پرینت چاپ کنیم:
My name is milad, python is number 1
در متن بالا کلمه milad و 1 مقادیر دو تا متغییر هستند و می توانند عوض بشوند ولی بقیه جمله ثابت هستش. جاهایی که ما یه متن ثابت داریم و فقط قراره بخشی از اون عوض بشه میاییم از string formatting استفاده می کنیم که خودش انواع مختلفی داره که به شرح زیر هستش:
۱− استایل قدیمی
این روش خودش به دو صورت قابل استفاده هستش. روش اول:
name = 'milad'
number = 1
print ("My name is %s, python is number %d" %(name, number))
My name is milad, python is number 1
در مثال بالا از s% برای جای گذاری یک رشته و از d% که برای جای گذاری یک عدد است استفاده کردم. و در آخر در داخل ()% میام متغییر یا مقدارهایی که قرار است به جای s% و d% نمایش داده بشود را می نویسم. مثال بالا را می توان به صورت زیر هم نوشت:
print ("My name is %s, python is number %d" %('milad' , 1))
My name is milad, python is number 1
در مثال بالا به جای استفاده از متغییر اومدم مستقیما مقدار مورد نظر نوشتم.
روش دوم استایل قدیمی :
name = 'milad'
number = 1
print ("My name is %(name)s, python is number %(num)d" %{"name" : name, "num" : number})
My name is milad, python is number 1
در روش بالا اومدم بین هر % و s یا d داخل پرانتز یه نامی تعریف کردم تا با استفاده از این نام در ادامه بیام اون مقداری که می خوام در داخل متن قرار بدم. خوبی این روش اینه که نیاز به رعایت ترتیب در نوشتن مقادیر و متغییرها جهت چاپ در متن نیست و آزادی بیشتری در چاپ داریم.
2- روش str.format
این روش تو پایتون 3 معرفی شدش ولی بعدا تو پایتون 2.7 هم از این روش استفاده شد. این روش میشه به دو صورت استفاده کردش. روش اول :
name = 'milad'
number = 1
print ("My name is {}, python is number {}".format(name, number))
My name is milad, python is number 1
تو این روش هرجایی که قراره یه چیزی قرا بگیره باید از {} استفاده بکنید و در آخر در داخل ()format بیایید اون متغییر یا مقادیری که قرار است در متن نمایش داده بشوند را بنویسیم.
روش دوم :
name = 'milad'
number = 1
print ("My name is {name}, python is number {num}".format(name = name, num = number))
My name is milad, python is number 1
این روش شبیه روش دوم بخش استایل قدیمی هستش ولی با این تفاوت که این شیوه منظم تر و بهتر از استایل قبلی هستش.
3- استایل f-string
این استایل در پایتون 3.6 معرفی شدش و به نظر من بهترین و دم دست ترین استایل بین استایل های دیگه هستش شیوه استفاده از این استایل هم به صورت زیر هستش:
name = 'milad'
number = 1
print( f"my name is {name}, python is number {number}")
My name is milad, python is number 1
در این استایل دیگه خبری از % و format و این جورچیزا نیستش و کافیه قبل متنتون یدونه f بذارید و در داخل متنی که می خواهید چاپ کنید بیایید متغییرهایی که می خواهید رو داخل {} استفاده بکنید به همین سادگی!
مطلبی دیگر از این انتشارات
مفهوم functor چیست؟
مطلبی دیگر از این انتشارات
خلاق،محافظه کار یا گیک کدوم برنامه نویس برای کار شما مناسب است؟
مطلبی دیگر از این انتشارات
زبان برنامهنویسی Rust: مفاهیم متداول برنامه نویسی