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 بذارید و در داخل متنی که می خواهید چاپ کنید بیایید متغییرهایی که می خواهید رو داخل {} استفاده بکنید به همین سادگی!