دوره آموزشی پایتون با ۱۵۰ چالش - قسمت سوم - چالش های ۲۰ تا ۲۶

به نام خدا.سلام.خب، نوبت به قسمت سوم میرسه.قسمت های قبلی رو با استفاده از این لینک ها میتانید ببینید:قسمت معرفیقسمت صفرقسمت اولجواب چالش های قسمت اولقسمت دومجواب چالش های قسمت دومتوضیحکتو این قسمت میخوایم راجب String ها صحبت کنیم که یجورایی میشه همون «متن» خودمان. البته میتانیم بگیم که String یعنی یه رشته ای (یا زنجیره ای) از کاراکتر ها که دنبال هم آمدن، حالا این کاراکتر ها میتانن هم حروف الفبا باشن، هم اعداد و هم سمبل های مختلف.وقتی میخوایم یه String بسازیم، باید اون رو بین ۲ تا «"» یا «'» قرار بدیم. فرقی نمیکنه کدام رو انتخاب میکنید. مثل: "sohail" و 'sohail'بعضی کاراکتر ها رو نمیشه همینجور بین مثلاً ۲ تا " یا ' وارد کرد. مثل کاراکترهای «\» و «'» و «"». برای اینکه بتانیم مثلاً یه String مثل sohail\90 داشته باشیم، باید یه \ اضافی پشت اون \ اصلی که میخوایم پرینت بشه، بزاریم. مثلاً باید بنویسیم "sohail\\90" که در واقع یکی از اون \ ها فقط print میشه. یا مثلاً اگه بخوایم یه String مثل sohail and "his" father داشته باشیم، برای اینکه اون " ها پرینت بشن باید String رو به شکل "sohail and \"his\" father" بنویسیم.یه نکته مهم اینه که String ها با اعداد قابل جمع نیستن! یعنی اگه شما یه String مثل "6" داشته باشی، این الان اصلاً عدد نیست. برای همین اگه بنویسی "6" + 6 پایتون error میده، چون اولی عدده ولی دومی String. برای حل کردن این مشکل باید اون String رو تبدیل به یه عدد بکنیم. مثلاً اگه قراره اون String رو از user بگیریم، کل اون input رو میدیم به یه function به اسم int، مثال زیر رو ببینید:name = int(input(&quotAdad ro vared konid: &quot))اینجا هرچی user وارد کنه تبدیل میشه به int. یادتان باشه که input به ما String میده (یعنی هرچی که با input از user میگیریم، همیشه String میباشد!)، پس اگه میخوایم از user عدد بگیریم، باید قبل از استفاده از اون، بیایم و اون چیزی که user وارد کرده رو تبدیلش کنیم به عدد. اینجا int یعنی عدد صحیح. اگه بخوایم عدد اعشاری از user بگیریم، به جای int میتانیم از float استفاده کنیم.مثال بالا رو به شکل زیر هم میشه انجام داد که یکم طولانی تره:name = input(&quotAdad ro vared konid: &quot) name = int(name)عکس این قضیه هم میتانه پیش بیاد، یعنی ممکنه بخوایم concatenation انجام بدیم، یعنی چه؟ یعنی اگه ۲ تا String رو باهم جمع کنیم، پایتون میاد و اون ۲ تا رو میچسبانه بهم و نتیجش میشه یه String. ولی برای اینکار باید هر دو تا چیز String باشن. مثلاً اگه بنویسیم:tedade_koshte_ha = 25 + &quot nafar.&quotاینجا error میده. چون ۲۵ عدده و String نیست، پس میایم و با استفاده از یه function به اسم str تبدیلش کنیم به String. مثل:tedade_koshte_ha = str(25) + &quot nafar.&quotیه مفهوم دیگه هم داریم به اسم multiple line strings، یعنی String هایی که بیشتر از یک خط رو اشغال میکنن! (در حالت عادی String ها یک خطی هستن). برای اینکار از ۳ تا " استفاده میکنیم:payam = &quot&quot&quotSalam. khosh amadid. khodafez.&quot&quot&quotتو این مثال، ۳ تا line (یا خط) print میشه. (باید خودتان امتحان کنید که در عمل نتیجه رو ببینید).البته برای چند خط print کردن میتانیم تو همون String های قبلی خودمان، از n\ هم استفاده کنیم (که بهش میگن new line character)، مثل:payam = &quotSalam.\nkhosh amadid.\nkhodafez.&quotنکته خیلی مهم: همه اینها رو باید خودتان انجام بدید که خوب بفهمید، با خواندن و نگاه کردن فقط سردرگم میشید.مثال هاخب بریم سراغ مثال ها. یادتان باشه که همه مثال ها و چیزهایی که میخوانید رو خودتان تایپ کنید و امتحانشان کنید. تنها راه یادگیری همینه.مثال ۱len(&quotsohail&quot) >>> 6اینجا یه function داریم به اسم len که کارش اینه که طول یه String رو به ما بده (البته طول چیزهای دیگه رو هم میده که فعلاً با اون کاری نداریم).مثال ۲name = &quotSoHaiL MorADy&quot name.upper() >>> &quotSOHAIL MORADY&quot name.lower() >>> &quotsohail morady&quot name.title() >>> &quotSohail Morady&quot name.capitalize() >>> &quot Sohail morady&quotاینجا هم میبینیم که function های (یا method های) upper و lower و title و capitalize چکار میکنن. که نیازی به توضیح نداره. فقط باید خودتان حتماً انجام بدید اینها رو.مثال ۳esm = &quotsohail&quot name_khanevadegi = &quotmorady&quot esme_kamel = esm + name_khanevadegi print(esme_kamel)اینجا هم که همون concatenation که اول مقاله توضیح دادم رو داریم میبینیم که خیلی راحته. فقط حواستان باشه که concatenation بطور اتوماتیک بین اون ۲ تا کلمه space نمیزاره.مثال ۴text = &quot salam &quot print(text.strip(&quot &quot)) >>> &quotsalam&quotاینجا داریم یه function (یا method ، فرقشان رو بعداً میخوانیم) جدید میبینیم به اسم strip. کاری که strip میکنه اینه که میاد و اون چیزی که ما بهش میدیم رو از اول و آخر یه String حذف میکنه. مثلاً اینجا ما به strip یه space یا همون فاصله رو دادیم و اون هم آمده و اون space های اضافی رو از اول و آخرِ text حذف کرده.مثال ۵payam = &quotKhoramshahr azad shod.&quot print(payam[0:12]) >>> &quotKhoramshahr &quotاینجا داریم یادمیگیریم که چطور فقط یه قطعه هایی از یه String رو نشان بدیم. برای اینکار، بعد از اون String میایم [a:b] رو مینویسیم. این یعنی چه؟ یعنی یه قطعه از اون String، یعنی از a تا b.حالا این a و b چه هستن؟ به اینا میگن index.برای درک این قضیه باید این رو بدانید که تو پایتون، String ها یه چیزی دارن به اسم index. یعنی چه؟ یعنی درواقع هرکدام از کاراکترهایی که توی String ما هستن (حتی space!)، یه index دارن که جایگاه اونها رو تو اون String نشان میده. شکل زیر رو ببینید:توی این عکس، ما یه String داریم به شکل "Hello world" و داریم تو خط اول index های هرکدام از اون کاراکتر ها رو میبینیم. یادتان باشه که تو پایتون index ها از صفر شروع میشن، نه یک!حالا وقتی میایم مینویسیم [0:12]payam ، یعنی داریم بهش میگیم که فقط کاراکترهایی رو نشان بده که از index صفر تا ۱۲ هستن (البته بدون خودِ اون کاراکتری که index اون میشه ۱۲).فقط من عمداً عدد ۱۲ رو انتخاب کردم که شما ببینید که space هم یه index برای خودش داره و اون space اضافی آخر " Khoramshahr" به همین خاطره.البته بازم میگم، حواستان باشه که خود اون عدد دوم رو به ما نمیده. یعنی تو اون payam، کاراکتری که index اون ۱۲ هست، میشه اون a که اول کلمه azad آمده (و index اون space ما میشه ۱۱)، ولی تو نتیجه نهایی اون a رو به ما نمیده و به space ختم میشه.بازم میگم، تا وقتی خودتان این چیزها رو تایپ نکنید و امتحان نکنید، هیچی یاد نمیگیرید.چالش هاخب، بازم به چالش ها رسیدیم که خیلی باحالن.بازم مثل همیشه میگم، اگه نتانستید حل کنید، نگران نشید، با تمرین همه چی حل میشه به مرور زمان.و طبق روال معمول، هر چیزی که برای حل کردن چالش ها لازم دارید تو این قسمت و قسمت های قبلی وجود داره و چیزی جز اینها نداره.چالش ۲۰از user بخواید که اسم کوچکش رو وارد کنه و بعد طول اسم کوچکش رو بهش بگید.چالش ۲۱از user بخواید که اسم کوچکش رو وارد کنه و بعد هم ازش بخواید اسم خانوادگیش رو وارد کنه. بعد این ۲ تا رو به هم بچسبانید (با یه فاصله بینشان) که اسم کاملش ساخته بشه. در آخر، اسم کاملش و همچنین طول اسم کاملش رو بهش بگید.چالش ۲۲از user بخواید که اسم کوچک و بزرگش رو به حروف کوچک وارد کنه. بعد اون ۲ تا رو بهم بچسبانید که اسم کاملش ساخته بشه و اسمش رو جوری تغییر بدید که حرف اول هر کلمه که تو اسمش هست، حرف بزرگ باشه. آخر کار هم اسم کاملش رو با این تغییرات بهش نشان بدید.مثلاً اگه user به ما "sohail" و "morady" رو به ما بده، ما باید بهش "Sohail Morady" رو بدیم و طولش رو هم باید بدیم، که میشه ۱۳.چالش ۲۳از user بخواید که یه متن نسبتاً طولانی رو وارد کنه (مثلاً به اندازه یک خط)، بعد طول متنی که وارد کرده رو بهش بگید.بعد ازش یه نقطه شروع و یه نقطه پایان بگیرید و اون قطعه از متن رو که بین این نقطه شروع و پایان قرار داره، بهش نشان بدید. (یادتان باشه که تو پایتون index ها از صفر شروع میشن، نه یک!)چالش ۲۴از user بخواید که هر کلمه ای که میخواد رو وارد کنه و بعد شما اون کلمه رو جوری بهش نمایش بدید که همه حروفش، حروف بزرگ الفبا باشن.چالش ۲۵از user بخواید که اسم کوچکش رو وارد کنه. اگه طول اسم کوچیکش از ۵ کمتر بود، ازش بخواید اسم خانوادگیش رو هم وارد کنه و بعد هر دو رو به هم بچسبانید (بدون space بینشان) و در آخر هم اسم کاملشان رو با حروف بزرگ بهشان نشان بدید.ولی اگه طول اسم کوچکشان ۵ یا بیشتر از ۵ بود، اسم کوچکشان رو با حروف کوچک بهشان نشان بدید.چالش ۲۶این چالش یکم به فکر نیاز داره، ولی اونقدر ها هم سخت نیست.از user بخواید یه کلمه وارد کنه، اگه اون کلمه حرف اولش جزو حروف صدا دار نباشه (a, e, i, o, u)، حرف اولش رو ببر بچسبان به آخر کلمه و یه ay هم بزن آخرش و نتیجه رو با حروف کوچیک نشان بده.اگه کلمه با حروف صدا دار شروع میشه، فقط یه way بچسبان به آخرش و نتیجه رو با حروف کوچیک نشان بده.مثلاً اگه کلمه ای که وارد میکنن "Sohail" باشه، شما باید بهش ohailsay رو نشان بدید. یا اگه "Virgool" رو وارد کنن، شما باید بهشان irgoolvay رو نشان بدید.و اگه کلمه ای که وارد میکنن "Iran" باشه، شما باید بهش iranway رو نشان بدید. یا اگه به برنامه "Eshgh" بدن، شما باید بهش eshghway رو نشان بدید.یا علی.