انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: مشکل randrange  (دفعات بازدید: 1371 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین pakseresht

  • Newbie
  • *
  • ارسال: 4
  • جنسیت : دختر
مشکل randrange
« : 19 دی 1395، 05:37 ق‌ظ »
سلام و وقت بخیر
من دقیقا نمی دونم کجا باید سوالمو بپرسم ولی چون خیلی کارم گیره، نوشتم.
یه تیکه کد توی پایتون دارم که برای اینکه به نتیجه برسه باید خطاهاشو رفع کنم. تیکه کد اینه:
def propagateLabel(G):
    visitSequence = random.sample(G.nodes(),len(G.nodes()))
    for i in visitSequence:
        node = G.node[i]
        label = node["label"]
        dict = getMaxNeighborLabel(G, i)

        if(not dict.has_key(label)):
            newLabel = dict.keys()[random.randrange(len(dict.keys()))]
            node["label"] = newLabel
            # dict.keys() -> list of dict's keys
قسمتی که خطا می ده برای این قسمته:
random.randrange(len(dict.keys()))

و خطایی که نشون می ده اینه:
191                     return self._randbelow(istart)
    192                 return _int(self.random() * istart)
--> 193             raise ValueError, "empty range for randrange()"
    194
    195         # stop argument supplied.

ValueError: empty range for randrange()
ممکنه اینجا کسی بتونه کمک کنه؟
« آخرین ویرایش: 19 دی 1395، 10:53 ق‌ظ توسط دانیال بهزادی »

آفلاین ارباب!

  • Sr. Member
  • *
  • ارسال: 448
  • جنسیت : پسر
پاسخ : مشکل randrange
« پاسخ #1 : 19 دی 1395، 07:53 ق‌ظ »
سلام.
احتمالش هست مشکل این باشه که یادتون رفته ورودی randrange رو به علاوه ی 1 کنید..؟
(علت این که گاهی وقتا باید به علاوه 1 کنید اینه که وقتی می خواید از 0 تا n تولید بشه باید 1+n رو بدید به عنوان ورودی چون خود آخری رو تولید نمی کنه..)
(یادتون نره این جور مواقع می تونید از بدوی ترین راه debug کردن ینی کلی print لابه لای خطوط کدتون استفاده کنید تا مچشو رو بگیرید..)
(همچنین کداتونم تو تگ code بذارید که خوانا تر باشه.. اون بالا علامت # داره..)

ویرایش:
با توجه به توضیحات و کدتون معلومه که اگه تعداد کلید های دیکشنریتون 0 باشه ورودی randrange برابر با 0 می شه که به مشکل می خوره.. پس خروجی len رو به علاوه ی 1 کنید ببینید درست می شه یا نه..
« آخرین ویرایش: 19 دی 1395، 04:13 ب‌ظ توسط ارباب! »
Void Linux + XFCE

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19724
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
پاسخ : مشکل randrange
« پاسخ #2 : 19 دی 1395، 10:55 ق‌ظ »
کد کامل رو بذار
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آنلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : مشکل randrange
« پاسخ #3 : 20 دی 1395، 01:52 ق‌ظ »
این مشکل وقتی پیش میاد که dict هیچ عضوی نداشته باشه و مسلما باید قبل از اینکه وارد این بخش کد بشید، چک کنید که dict حداقل یک عضو داشته باشه.