HW 1.pdf

‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫دمرس‪:‬‬
‫حق‬
‫علیرضا رطقی یقت‬
‫رطاح تمرین‪:‬‬
‫علیرضا خادمی‬
‫‪1‬‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫به نکات زیر حتما دقت کنید‪:‬‬
‫‪ ‬موعد تحویل تمرین تمدید نخواهد شد‪.‬‬
‫‪ ‬قطع بودن اینترنت منزل یا خوابگاه‪ ،‬کندی سرعت اینترنت‪ ،‬عدم وقت و ‪ ...‬هیچ کدام‬
‫دلیل موجهی برای تاخیر نیستند‪ .‬سعی کنید چند ساعت زودتر از مهلت تعیین شده‬
‫اقدام به ارسال پاسخ خود کنید که بتوانید این مشکالت را حل کنید‪.‬‬
‫‪ ‬تذکر ‪ : 1‬به برنامه های مشابه نمره منفی تعلق خواهد گرفت‪ .‬بنابراین اکیدا توصیه می‬
‫شود که هر دانشجو برنامه خود را به تنهایی نوشته و حتی االمکان دارای الگوریتم‪ ،‬کد‬
‫و نحوه پیاده سازی متفاوتی باشد (اولین تقلب‪ :‬دو نمره منفی‪ ،‬دومین تقلب‪ ۹ :‬نمره‬
‫منفی‪ ،‬سومین تقلب‪ :‬عدم قبولی در درس)‪.‬‬
‫‪ ‬زمان تحویل حضوری تمرین بعد از مهلت ارسال آن خواهد بود و به زودی اعالم خواهد‬
‫شد‪.‬‬
‫‪ ‬سواالت خود را در صفحه درس برنامه نویسی در سایت ‪ piazza.com‬به آدرس زیر‬
‫مطرح کنید‪:‬‬
‫‪ https://piazza.com/sharif/fall2015/ce1531213/home/‬‬
‫‪ ‬برای آپلود تمرین ها به سایت ‪ Quera.ir‬مراجعه کرده و مطابق با دستورالعمل‪،‬‬
‫تمرینهای خود را آپلود کنید‪.‬‬
‫‌‬
‫‪( ‬دستورالعمل آپلود تمرین ها‪ ،‬در صفحه درس و سایت ‪ piazza‬موجود می باشد)‬
‫‪ ‬درصورتی که مهلت آپلود به پایان برسد ‪:‬‬
‫‪ o‬تا یک روز تاخیر ‪ %03‬نمره کل و از یک روز تا دو روز تاخیر ‪ %03‬نمره کل کم‬
‫خواهد شد! تاخیر بیشتر از دو روز هیچ نمرهای نخواهد داشت‪.‬‬
‫آخرین مهلت ارسال تمرین بدون تاخیر‪:‬‬
‫تا پایان روز (ساعت ‪ 1 )۴۹‬آبان ‪10۴۹‬‬
‫‪2‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫سوال ‪ :1‬بازی سنگ‪ ،‬کاغذ‪ ،‬قیچی‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫(‪ ۴0‬نمره)‬
‫در این تمرین ‪ ،‬شما می توانید عبارات شرطی (‪ )if , elif , else‬را تمرین کنید ‪.‬‬
‫هدف نوشتن برنامه ای است تا نتیجه بازی سنگ‪ ،‬کاغذ‪ ،‬قیچی را بین دو بازیکن ‪ 1‬و ‪ 2‬تعیین کند‪ .‬برنامه شما باید نتیجه نهایی را چاپ کند‪.‬‬
‫در اینجا قوانین بازی ذکر شده اند (با اینکه از این قوانین آگاه هستید ‪: )‬‬
‫"سنگ بر قیچی ‪ ،‬قیچی بر کاغذ و کاغذ بر سنگ غلبه خواهند کرد‪".‬‬
‫*** برای راحتی کار خود میتوانید جدولی مانند زیر تهییه کرده و تمام حاالت ممکن و نتایج آن را بنویسید‪ .‬این جدول در نوشتن کد برنامه‬
‫به شما کمک می کند‪.‬‬
‫به قوانین زیر حتما توجه کنید تا نمره نهایی شما توسط سیستم به درستی محاسبه شود ‪:‬‬
‫الف ) در داخل پرانتز عبارت )(‪ raw_input‬به هیچ وجه چیزی ننویسید ! ( سیستم برای تصحیح کد شما به این مورد حساس است)‬
‫*** از )(‪ raw_input‬در پایتون ‪ 2‬برای گرفتن ‪ string‬استفاده میشود ‪( .‬ورودی ها دقیقا مثل ورودی جدول باشد‪).‬‬
‫ب ) برای راحتی کار تمام ورودی ها به صورت حروف کوچک نوشته شود در غیر این صورت سیستم به اشتباه نمره شما را محاسبه میکند‪.‬‬
‫(‪ )paper , rock , scissors‬به ترتیب قیچی‪ ،‬سنگ و کاغذ !!! ] فقط از این کلمات استفاده کنید[‬
‫ج ) برای چاپ نتایج حتما از عباراتی که به شما داده شده است استفاده کنید و حتما بزرگ و کوچک بودن حروف ‪ ،‬فاصله بین کلمات و غیره‬
‫رعایت شود‪ .‬توصیه میکنم عبارات را عینا کپی کنید !!!!‬
‫*** در این برنامه دو مرتبه در مورد ورودی سوال می شود که به ترتیب ورودی برای ‪ Player 1‬و ‪ Player 2‬می باشد‪.‬‬
‫شما با بررسی اینکه کدام بازیکن برنده خواهد شد نتیجه نهایی را چاپ می کنید‪ .‬به عنوان مثال ‪:‬‬
‫‪Player 1? rock‬‬
‫‪Player 2? scissors‬‬
‫‪Player 1 wins.‬‬
‫(خروجی برنامه حتما به شکل آخرین جمله باال باید باشد ‪ ،‬فقط شماره بازیکن برنده متفاوت خواهد بود)‬
‫در صورت تساوی عبارت زیر چاپ شود ‪:‬‬
‫‪Tie.‬‬
‫تنها ورودی های ممکن ‪ rock , paper , scissors‬خواهند بود‪ .‬اگر کاربر ورودی غیر از این سه کلمه را تایپ کرد باید خروجی برنامه به‬
‫شکل زیر باشد ‪:‬‬
‫‪This is not a valid object selection‬‬
‫(دقت شود برای حالتی که ورودی ها کلمه های ممکن بود در انتهای جمله خروجی نقطه چاپ می شد ولی در این حالت نقطه چاپ نمی شود‬
‫این نکته صرفا برای توجه شما به تایپ دقیق می باشد)‬
‫‪3‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫نکته (اختیاری) ‪ :‬اگر عبارات شرطی که نوشته اید طوالنی شد برای راحتی کار می توانید آن را به صورت زیر به چند خط تقسیم کنید ‪:‬‬
‫‪if (player1 == “rock” and‬‬
‫‪player2 == “scissors”) :‬‬
‫”‪print “Player 1 wins.‬‬
‫در این روش (گذاشتن پرانتز) ‪ ،‬بعد از تایپ ‪ and‬میتوانید ‪ Enter‬را بزنید و ادامه را از همان جایی که برنامه از خط بعد برای شما می آورد‬
‫تایپ کنید یا میتونید با استفاده از ‪ backslash‬همین کار را انجام دهید ‪:‬‬
‫\‪if player1 == “paper” and‬‬
‫‪player2 == “scissors” :‬‬
‫”‪print “Player 2 wins.‬‬
‫*** می توانید از تابع نیز در نوشتن برنامه خود استفاده کنید !!! (اختیاری)‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪Player 2 wins.‬‬
‫‪scissors‬‬
‫‪rock‬‬
‫‪paper‬‬
‫‪paper‬‬
‫‪Tie.‬‬
‫‪4‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫سوال ‪ : ۴‬شرط ها‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫(‪ ۴3‬نمره)‬
‫هدف این برنامه فهمیدن کامل جمالت شرطی می باشد‪.‬‬
‫*** شخصی به شغل رویایی خود فکر می کند ‪ ،‬ولی محدودیت هایی وجود دارد‪:‬‬
‫او ‪ California‬را دوست دارد و می خواهد در آنجا شاغل باشد اما برای زندگی باید سالی ‪ 40,000‬دالر پرداخت کند‪.‬‬
‫همچنین این شخص از ‪ Massachusetts‬متنفر است و برای زندگی سالیانه باید ‪ 100,000‬دالر بپردازد‪.‬‬
‫اگر به او جای دیگری پیشنهاد شود درصورتی که مبلغ پرداختی ‪ 60,000‬دالر در سال باشد او شغل را قبول می کند‪.‬‬
‫حال برنامهای بنویسد که ‪ 2‬ورودی از کاربر گرفته که به ترتیب محل زندگی و مبلغ پرداختی می باشد و سپس با استفاده از شرط های باال‬
‫برنامه خروجی های مورد نظر که در زیر نمونه ای از آن نمایش داده شده است را چاپ کند‪.‬‬
‫‪Location = Massachusetts‬‬
‫خروجی‬
‫‪Pay = 65,000‬‬
‫‪Result :‬‬
‫‪No way‬‬
‫‪Pay = 110,000‬‬
‫‪Result :‬‬
‫!‪I’ll take it‬‬
‫‪Location = California‬‬
‫‪Pay = 50,000‬‬
‫!‪I’ll take it‬‬
‫‪Result :‬‬
‫‪Pay = 35,000‬‬
‫‪No thanks, I can find something better.‬‬
‫‪Result :‬‬
‫)‪Location = …. (any other place‬‬
‫‪Pay = 80,000‬‬
‫!‪I’ll take it‬‬
‫‪Result :‬‬
‫‪Pay = 35,000‬‬
‫‪No thanks, I can find something better.‬‬
‫برای چاپ خروجی ها حتما به رعایت نکات نگارشی دقت کنید‪( .‬توصیه میکنم عینا عبارات را کپی کنید)‬
‫همچنین دقت کنید که ‪ California‬و ‪ Massachusetts‬با حروف بزرگ شروع شده اند!!!‬
‫‪5‬‬
‫‪Result :‬‬
‫ورودی‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫سوال ‪ : 0‬تبدیل مبنا‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫(‪ 03‬نمره)‬
‫برنامه ای بنویسید که عددی صحیح مانند ‪ n‬را از ورودی دریافت کند و بگوید که این عدد اگر در مبنای ‪ 2‬نوشته شود چند رقمی است‪.‬‬
‫نکات‪:‬‬
‫‪‬‬
‫در ورودی تنها یک عدد ‪ n‬آمده است‪.‬‬
‫‪‬‬
‫شما نیز در خروجی تنها یک عدد چاپ کنید که نشان دهنده ی جواب باشد‪.‬‬
‫‪‬‬
‫در ورودی فقط اعداد صحیح غیر منفی ( ‪ ) n >= 0‬داده میشوند‪.‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪۹‬‬
‫‪1۴‬‬
‫‪7‬‬
‫‪۴۴‬‬
‫‪6‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫سوال ‪ : ۹‬سری تیلور‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫(‪ ۹0‬نمره)‬
‫در ریاضیات ‪ ،‬سری تیلور یا گسترش تیلور نمایش یک تابع به صورت مجموع بی نهایت جمله است که از مشتق های تابع در یک نقطه به‬
‫دست می آید‪ .‬ریاضیدان انگلیسی ‪ ،‬بروک تیلور ‪ ،‬در سال ‪ 1111‬میالدی ‪ ،‬مفهوم سری تیلور را به طور رسمی معرفی کرد‪ .‬مرسوم است که‬
‫توابع را حول یک نقطه با تعدادی متناهی از جمالت سری تیلور تقریب بزنند‪ .‬هر تعداد متناهی از جمالت اول سری تیلور به چند جمله ای‬
‫تیلور معروف است‪.‬‬
‫برای تابع سینوسی حول نقطه ‪ 0‬داریم ‪:‬‬
‫برنامه ای بنویسید که با استفاده از بسط تیلور ‪ ،‬سینوس یک عدد ‪ float‬را حساب کند‪.‬‬
‫ورودی ‪:‬‬
‫یک عدد ‪ float‬بر حسب درجه در ورودی می آید‪.‬‬
‫خروجی ‪:‬‬
‫سینوس عدد ورودی با استفاده از بسط تیلور تا ‪ 2‬رقم اعشار‬
‫توجه کنید که استفاده از توابع ماژول ‪ math‬مجاز نیست !!! (در صورت استفاده نمره این تمرین ‪ 0‬محاسبه خواهد شد !!!)‬
‫نکته ‪:‬‬
‫مهم ‪ :‬برای چاپ خروجی از دستور زیر استفاده کنید تا بتوانید خروجی را تا ‪ 2‬رقم اعشار چاپ کنید‪ .‬داخل پرانتز عددی که قرار است چاپ‬
‫کنید را قرار دهید‪.‬‬
‫به طور مثال اگر در برنامه خود خروجی را در متغیر ‪ m‬ذخیره کردهاید‪ ،‬عبارت زیر را بنویسید‪:‬‬
‫)‪print “%.2f” % (m‬‬
‫)‪sin(x‬‬
‫زاویه بر حسب درجه‬
‫‪0.21‬‬
‫‪1.00‬‬
‫‪12.3‬‬
‫‪92‬‬
‫‪7‬‬
‫تمرین سری اول درس مبانی برنامه نویسی پایتون‬
‫سوال ‪ : 0‬عدد کامل‬
‫دانشگاه شریف‬
‫پاییز ‪۴۹‬‬
‫(‪ 03‬نمره)‬
‫عدد کامل ‪ ،‬عدد مثبتی است که برابر مجموع مقسوم علیه های کوچکتر از خودش باشد‪ .‬به طور مثال ‪ 22‬کامل است‪ .‬زیرا‬
‫‪28 = 1 + 2 + 4 + 7 + 14‬‬
‫برنامه ای بنویسید که عدد ‪ n‬را از کاربر گرفته و تمام اعداد کامل کوچکتر یا مساوی ‪ n‬را در خروجی چاپ کند‪.‬‬
‫خروجی نمونه‬
‫ورودی نمونه‬
‫‪6‬‬
‫‪6‬‬
‫‪6‬‬
‫‪03‬‬
‫‪۴2‬‬
‫‪8‬‬