কেন আপনার স্ক্রিপ্টটি ডান এখন কাজ করছে না ব্যাখ্যা করার জন্য, আমি পরিবর্তনশীল নামান্তর করব 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
(আমি আপনার মুদ্রণ বিবৃতিটিও, উপায় দ্বারা সরিয়েছি))