باگ پایتون!

سوال

با سلام و وقت بخیر خدمت دوستان؛

توی دوره‌ی دوم الگوریتم (جلسه سوم) آقای عباسی یه مسئله رو مطرح میکنن که در اون یه تعداد عدد گرفته میشه و در خروجی باید اعلام کنیم کدوم عدد بیشترین تکرار رو داشته و همچنین تعداد تکرار چند بار بوده.

طبق روش ایشون هر عدد که توی آرایه‌مون بهش می‌رسیم (حتی اگه قبلا تعدادش حساب شده باشه)؛ تعدادش شمرده میشه (که من توی کدم هر بار نمایشش میدم)؛ و گفتن که اگه میخواین عددی که قبلا تعدادش شمرده شده دوباره توسط سیستم شمرده نشه؛ باید از یه آرایه جدا برای این کار استفاده کرد. اما من توی کد بالا سعی کردم بدون استفاده از آرایه این کارو انجام بدم. این کد از لحاظ تئوری بنظر درسته اما وقتی ران میشه درست کار نمیکنه! وقتی دیباگش کردم و مرحله مرحله جلو رفتم تا ببینم مشکل از کجاس شاهد یه اتفاق عجیب بودم؛ دیدم وقتی که دستور list1.remove(list1[j]), (j=2) انجام میشه بجای اینکه عضو (۲) از list1 حذف بشه عضو (۰) حذف میشه! ممنون میشم اگه کسی از دوستان بگن که این باگ هست یا مشکلی توی کد من هست که متوجهش نمیشم؛ ممنون.

اعداد ورودی که من وارد کردم به ترییب (از سمت ۲ شروع میشه):

۲,۲,۲۴,۲,۸,۸,۶,۶,۱,۱

حل شده 0
Ellnamin 6 ماه 2 پاسخ ها 96 دیده شده 0

پاسخ ها ( ۲ )

  1. سلام این باگ نیست و مشکل کد شماست. تابع remove یک مقدار رو میگیره و توی آرایه یا لیست سرچ می کنه و اولین عنصری که اون مقدار رو داشته باشه رو حذف می کنه که در کد شما عنصر با اندیس ۰ حذف میشه و این طبیعیه. برای این که این مشکل حل بشه پیشنهاد می کنم از تابع pop استفاده کنید و از اندیس برای حذف کردن استفاده کنید. یعنی بخش حذف کردن رو به شکل زیر تغییر بدید.

     

    بهترین پاسخ

ارسال یک پاسخ