به نام خدا

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

L1=['s','r','f','g','n','b']
L2=L1
print(L1)
( )L2.sort
print(L2)

خیر تاثیری نخواهد داشت به خاظر اینکه[:]L1 به معنای از اول تا آخر لیست L1 است که یعنی L2 را مساوی تمام L1 قرار بدهید که با L2 را مساوی L1 قرار بدهید تفاوتی ندارد.

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

تابع ( )sortلیست مشخص شده را مرتب کرده وعناصر مرتب شده را در همان لیست قبلی قرار میدهد.ولی تابع( ) sorted عناصر مرتب شده ی لیست را در یک لیست جدید قرار میدهد.

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

 

تمرین ۴ :خروجی قطعه کد زیر چیست؟(جدول trace آنرا ترسیم کرده یا عملکرد کد را توضیح دهید.)

 


['names1 = ['Amir', 'Barry', 'Chales', 'Dao
names2 = names1
[:]names3 = names1
'names2[0] = 'Alice
'names3[1] = 'Bob
sum = 0
:for ls in (names1, names2, names3)
:'if ls[0] == 'Alice
sum += 1
:'if ls[1] == 'Bob
sum += 10

print(sum)

در ابتدا هر سه لیست باهم برابرند با این تفاوت که اعمال تغییر در لیست دوم باعث تغییر در لیست اول هم میشود چون هردو لیست را باهم برابر قرار داده ایم ولی در لیست سوم ما فقط عناصر لیست اول را با عناصر لیست سوم‌برابر قرار داده ایم.

وقتی که اندیس صفر لیست names2 به alice تغییر میکند چون در بالا names2=names1 قرار دادیم پس اندیس صفرم لیستnames1 هم به alice تغییر میابد.و اندیس یکم numbers3 هم به Bob تغییر میابد . پس وقتی وارد حلقه میشود اول برای names 1 حلقه چک میشود بعد names 2 و بعد names3. که از آنجایی که اندیس صفرم لیست اول ،alice است به مقدار sum یک عدداضافه میشود(sum=1) ولی اندیس یکمش bob نیست پس شرط دوم اعمال نمیشود و سراغ names 2 میرود چون names 2 هم مثل names 1 است فقط شرط اول اجرا میشود و به مقدار sum یک عدد اضافه میشود .(sum=2) بعد سراغ names 3 میرود و از آنجایی که اندیس صفر آن مساوی alice نبوده ولی اندیس یک آن مساوی bobاست پس فقط شرط دوم اجرا میشود و به مقدار sum ده واحد اضافه میشود (sum=12) و عدد نهایی sum یعنی ۱۲ چاپ میشود .

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

L1=['s','r','f','g','n','b']
L2=L1
print(L1)
( )L2.sort
print(L2)
print(L1)

در کد اولیه (L2=L1) ما تمام لیست اول را برابر لیست دوم قرار میدهیم پس وقتی لیست دوم‌را مرتب میکنیم لیست اول هم مرتب میشود و در نهایت وقتی چاپشان میکنیم هردو مرتب شده ی لیست اول هستند ولی در کد دوم ([:]L2=L1) چون ما عناصر لیست اول را در لیست دوم قرار داده ایم وقتی مرتب میکنیم فقط لیست دوم مرتب میشود و لیست اول همان باقی میماند.