কেন আপনার স্ক্রিপ্টটি ডান এখন কাজ করছে না ব্যাখ্যা করার জন্য, আমি পরিবর্তনশীল নামান্তর করব unsorted
করার sorted
।
প্রথমে, আপনার তালিকাটি এখনও বাছাই করা হয়নি। অবশ্যই, আমরা সেট sorted
করতে False
।
while
লুপটি শুরু করার সাথে সাথে আমরা ধরে নিই যে তালিকাটি ইতিমধ্যে সাজানো হয়েছে। ধারণাটি হ'ল: আমরা দুটি উপাদান যা সঠিক ক্রমে নেই তা খুঁজে পাওয়ার সাথে সাথে আমরা sorted
আবার সেট করেছিলাম False
। sorted
থাকবে True
শুধুমাত্র যদি ভুল ক্রমে কোন উপাদান ছিল ।
sorted = False # We haven't started sorting yet
while not sorted:
sorted = True # Assume the list is now sorted
for element in range(0, length):
if badList[element] > badList[element + 1]:
sorted = False # We found two elements in the wrong order
hold = badList[element + 1]
badList[element + 1] = badList[element]
badList[element] = hold
# We went through the whole list. At this point, if there were no elements
# in the wrong order, sorted is still True. Otherwise, it's false, and the
# while loop executes again.
কিছু ছোট ছোট সমস্যা রয়েছে যা কোডটিকে আরও দক্ষ বা পঠনযোগ্য হতে সহায়তা করবে।
ইন for
লুপ, আপনি ভেরিয়েবল ব্যবহার element
। প্রযুক্তিগতভাবে, element
একটি উপাদান নয়; এটি একটি তালিকা সূচক উপস্থাপন করে। এছাড়াও, এটি বেশ দীর্ঘ। এই ক্ষেত্রে, কেবলমাত্র i
"সূচক" এর মতো একটি অস্থায়ী পরিবর্তনশীল নাম ব্যবহার করুন ।
for i in range(0, length):
range
কমান্ড এছাড়াও মাত্র এক যুক্তি (নামে নিতে পারেন stop
)। সেক্ষেত্রে আপনি 0 থেকে সেই যুক্তি পর্যন্ত সমস্ত পূর্ণসংখ্যার একটি তালিকা পাবেন।
for i in range(length):
পাইথন স্টাইল গাইড করার পরামর্শ দেয় ভেরিয়েবল আন্ডারস্কোর সঙ্গে ছোট হাতের নাম হবে না। এটি এর মতো একটি ছোট স্ক্রিপ্টের জন্য খুব ছোট্ট একটি নিটপিক; পাইথন কোডটি প্রায়শই সাদৃশ্যপূর্ণ বলে আপনাকে অভ্যস্ত করা আরও বেশি।
def bubble(bad_list):
দুটি ভেরিয়েবলের মানগুলি অদলবদল করতে, এগুলিকে টুপল অ্যাসাইনমেন্ট হিসাবে লিখুন। ডান হাতটি একটি টিউপল (বলে, (badList[i+1], badList[i])
হয় (3, 5)
) হিসাবে মূল্যায়ন হয় এবং তারপরে বাম হাতের দুটি ভেরিয়েবলকে বরাদ্দ করা হয় ( (badList[i], badList[i+1])
)।
bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]
সব একসাথে রাখুন, এবং আপনি এটি পান:
my_list = [12, 5, 13, 8, 9, 65]
def bubble(bad_list):
length = len(bad_list) - 1
sorted = False
while not sorted:
sorted = True
for i in range(length):
if bad_list[i] > bad_list[i+1]:
sorted = False
bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]
bubble(my_list)
print my_list
(আমি আপনার মুদ্রণ বিবৃতিটিও, উপায় দ্বারা সরিয়েছি))