آشنایی با برنامه نویسی پایتون

سلام به همه.امیدوارم که حال دلتون خوب باشه :)
به وبلاگ من خوش اومدین *.*
اینجا قراره با آموزش زبان پایتون پیش بریم و در آخر یه برنامه نویسِ خفن بشیم.
با من همراه باشید.

  • ۰
  • ۰

تمرین آخر

بررسی کنید که تابع Sort () موجود در پایتون از کدام روش یا روش های مرتب سازی معروف استفاده میکند؟

هنگام مرتب سازی بررسی می شود که آیا تعداد عناصر داخل آرایه از 64 بزرگ تر است یا کوچک تر اگر کوچک تر بود از binary insertion sort استفاده می کند . روش کار binary insertion sort نیز به این صورت است که ابتدا خانه اول را برداشته چون تک خانه است پس مرتب است سپس خانه بعدی را به آن اضافه کرده و آن دو را نسبت به هم مقایسه می کند و سپس سومی وارد می شود و عدد سوم را نسبت به دو عدد قبلی در جای مناسب قرار می دهد و این عملیات تازمانی که آرایه مرتب شود تکرار می شود . حالا اگر تعداد عناصر آرایه از 64 بیشتر باشد نیاز به استفاده از یک مفهوم تازه به نام run هستیم . خوب run نشان دهنده این است هر آرایه به زیر آرایه های با عناصر به تعداد run تقسیم شود بعد از اینکه آرایه را به زیر آرایه ها تبدیل کردیم برای هرکدام از این زیر آرایه ها insertion sort را اعمال می کنیم . پس از آنکه تمام زیر آرایه ها مرتب شد آنها را باهم merge می کنیم.

  • Zahra Moradkhani
  • ۰
  • ۰

تمرین آخر

برنامه ای بنویسید که اطلاعات 10 دانشجو شامل نام و شماره موبایل آنها را دریافت کند و در ساختار دیکشنری نگهداری کند.

تمرین

  • Zahra Moradkhani
  • ۰
  • ۰

۴-برنامه ای بنویسید که با استفاده از تابع بازگشتی تمام زیر مجموعه های یک مجموعه را چاپ کند.

تمرین 4

  • Zahra Moradkhani
  • ۰
  • ۰

۳-برنامه ای بنویسید که با استفاده از تابع بازگشتی تقسیم دو عدد صحیح برهم را محاسبه کند.

تمرین 3

  • Zahra Moradkhani
  • ۰
  • ۰

۲-برنامه ای بنویسید که به صورت بازگشتی ترکیب دو عدد n و r را محاسبه کند.

تمرین 2

  • Zahra Moradkhani
  • ۰
  • ۰

۱-برنامه ای بنویسید که یک لیست را از ورودی دریافت کرده و با استفاده از یک تابع بازگشتی مجموع مقادیر لیست را محاسبه و چاپ کند.

تمرین 1

  • Zahra Moradkhani
  • ۰
  • ۰

4-خروجی قطعه کد زیر چیست؟جدول Trace آن را رسم کنید یا عملکرد کد آن را توضیح دهید.

تمرین 4

 

1-  لیست  [‘ Amir ’ , ‘ barry ‘ , ‘ Chales ‘ , ‘ Dao ‘ ] در خانه حفظه names1  قرار میگیرد.

 

2-   names1  در خانه حافظه ای به نام names2  قرار میگیرد

 

3-  کپی از names1  میگیرد و در خانه حافظه ای به نام names3 قرار میگیرد .

 

4-  رشته اندیس 0 (سطر0) خانه حافظه names2  ، از ‘ Amir ‘  به رشته ‘ Alice ‘ تغییر میدهد.

 

5- به جای رشته ‘ Barry ‘ رشته ‘ Bob ‘ را جاگذاری میکند . تغییرات حاصل:

 

[' Names1 = [‘ Alice ‘ , ‘ Barry ‘ , ‘ Chales ‘ , ‘ Dao 

 

[' Names2 = [‘ Alice ‘ , ‘ Barry ‘ , ‘ Chales ‘ , ‘ Dao 

 

[' Names3 = [‘ Amir ‘ , ‘ Bob ‘ , ‘ Chales ‘ , ‘ Dao 

 

6- در مرحله بعد یک خانه حافظه ای به نام sum تعریف کرده مقدار 0 را داخل آن قرار میدهیم.

 

7- حلقه for را که val آن ls و sequence آن شامل سه لیست بالاست فراخوانی میکنیم.

 

8- اگر رشته موجود در اندیس 0 که درnames1  قرار دارد با ‘ Amir ‘ برابر بشد آنگاه : sum = sum+1

 

9- شرط 12 برقرار است چون در خانه های names1  و names2 رشته Alice به طور یکسان وجود دارد پس:

 

[' Names1 = [‘ Alice ‘ , ‘ Barry ‘ , ‘ Chales ‘ , ‘ Dao 

 

[' Names2 = [‘ Alice ‘ , ‘ Barry ‘ , ‘ Chales ‘ , ‘ Dao 

 

Sum = s+1   à  sum = 2

 

 10- اگر رشته موجود در اندیس 1 (سطر 1 ) با رشته ‘ Bob ‘ برابر باشد آنگاه :

 

sum = sum+10

 

[' Names3 = [‘ Amir ‘ , ‘ Bob ‘ , ‘ Chales ‘ , ‘ Dao 

 

 

11-  شرط 13 نیز برقرار است پس در sum  قبلی مقدار 10 نیز جمع بسته میشود

 

Sum = sum +10  à sum = 12

 

 حلقه تکرار میشود ولی چون شرط ها دیگر برقرار نیستند از حلقه خارج میشود

 

12- عناصر موجود در خانه sum  را چاپ کن

  • Zahra Moradkhani
  • ۰
  • ۰

3-برنامه ای بنویسید که باقیمانده یک عدد بر 11 را بدون استفاده از % حساب کند.

تمرین 3

  • Zahra Moradkhani
  • ۰
  • ۰

2-تفاوت استفاده از تابع () sort با تابع () sorted برای مرتب سازی لیست ها چیست؟

تابع sort لیست مربوطه را مرتب نموده و مقدار آن را در خودش ذخیره میکند و خروجی برنمی گرداند اما تابع sorted خروجی داشته و می توان آن را در یک متغیر ذخیره نمود.در واقع sort متودی از یک iterable می باشد و از این رو نیازی به معرفی لیست موردنظر به عنوان ورودی ندارد اما به تابع sorted  باید iterable موردنظر برای مرتب سازی به عنوان ورودی داده شود.

  • Zahra Moradkhani
  • ۰
  • ۰

1-اگر در دستور دوم قطعه برنامه زیر،به جای L1=L2 بنویسیم [:] L2=L1 نتیجه چه تفاوتی خواهد کرد؟آیا در عملکرد برنامه تاثیرگذار است؟امتحان کرده و توضیح دهید.تمرین یکتمرین یک_2

خیر در عملکرد برنامه تاثیرگذار نیست.

حالت اول خودِ لیست را بطور کلی دریافت می کند و برابر لیست دوم قرار می دهدو در حافظه یک خانه یکسان را اشغال میکند و لذا هر تغییری در هر کدام از دو لیست اعمال کنیم در دیگری نیز اعمال خواهد شد ولی در حالت دوم،لیست اول را جز به جز کپی نموده و لیست جدید را تشکیل می دهد که اگر چه لیست های تشکیل شده در هر دو حالت یکسان خواهند بود اما در حالت دوم دو لیست به بخش های مجزایی در حافظه اختصاص داشته و لذا تغییرات ثانویه در هر یک از آن ها در دیگری اعمال نخواهد شد.با این وجود با توجه به اینکه L1 پیش از اعمال تغییر در L2 چاپ شده خروجی دو کد یکسان خواهد بود اما وضعیت متغیر ها در حافظه در دو حالت فوق متفاوت خواهد بود.

  • Zahra Moradkhani