چرا این کد پایتون در مرحله اول کار میکنه ولی در مرحله دوم ارور میده؟ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چرا این کد پایتون در مرحله اول کار میکنه ولی در مرحله دوم ارور میده؟

0 امتیاز
این کد دو عدد را از کاربر میگیرد و سپس دو لیست تصادفی به تعداد آن اعداد میسازد(در بازه 3 برابری هر عدد) و سپس اشتراک و تفاضل متقارن آنها را محاسبه و چاپ میکند. 
بار اول دو عدد را دریافت و جواب را چاپ میکند. ولی وقتی مجددا دو عدد جدید را دریافت میکند پیغام خطا میدهد
Traceback (most recent call last):
  File "C:\Users\rasoolinet\Downloads\old\New folder\00019 overlap.py", line 36, in <module>
    eshteruk=eshteruk(list1,list2)
TypeError: 'list' object is not callable
 
def random_list(number_of_elements):
    randomlist=[]
    for i in range(number_of_elements):
        randomlist.append(randint(0,3*number_of_elements))
    return randomlist
    
 
def eshteruk(list1,list2):
    eshteruk_list=[]
    for element in list1:
        if element in list2 and element not in eshteruk_list:
            eshteruk_list.append(element)
    return eshteruk_list
 
 
def tafavot(list1,list2):
    tafavot_list=[]
    for element in list1:
        if element not in list2 and element not in tafavot_list:
            tafavot_list.append(element)
    for element in list2:
        if element not in list1 and element not in tafavot_list:
           tafavot_list.append(element) 
    return tafavot_list
 
while True:
    
    from random import randint
 
    x1=int(input("Enter number of list1's member--->"))
    x2=int(input("Enter number of list2's member--->"))
 
    list1=random_list(x1)
    list2=random_list(x2)
    
    eshteruk=eshteruk(list1,list2)
    tafavot=tafavot(list1,list2)
 
    print ('list1= ',list1)
    print ('list2= ',list2)
    print('eshteruk= ',eshteruk)
    print('tafavot= ',tafavot)
#    del list1 , list2 , eshteruk , tafavot
          
            
 
سوال شده خرداد 27, 1401  بوسیله ی alirasooli (امتیاز 11)   2 4

1 پاسخ

0 امتیاز
پیغام خطا به این دلیل رخ می دهد که یک شی لیست را به همان نام به عنوان یک تابع اختصاص داده اید. شما یک تابع را eshteruk نامگذاری کرده اید و سپس تعریف آن را با لیستی که به همین نام اختصاص داده شده است بازنویسی کرده اید.
 
برای حل این مشکل می توانید نام لیست یا تابع را تغییر دهید، مثلاً نام لیست را به Eshteruk_list تغییر دهید.
پاسخ داده شده بهمن 14, 1401 بوسیله ی عباس همت خواه (امتیاز 436)   2 8 13
...