ورود

View Full Version : سوال: خطای list index out of range



zaxzax
پنج شنبه 28 بهمن 1389, 12:34 عصر
این کد برای تبدیله مبنا 8bit و جام کردنه انها با همه
الگوریتم ناقصه پس از ان اراد نگیرین, فقط ب من توضیح بدین این error,واسه چیه,و من کجا رو اشتباه نوشتم
این برنامه فقط برای اموزشه خودمه,لطفآ کمکم کنین :افسرده:



adad1=input("adad 1 :")
adad2=input("adad 2 :")

mabna=2


def tabdil(a,mabna):

i=-1
test=a
c=[]
if 1<mabna<10:
while i!=-8:
b=a%mabna
a=a/mabna
c.insert(i,b)
i=i-1
else:
pass
if test>=0:
c[0:0]=[0]
else:
c[0:0]=[1]
return c


def jam(a,b):
c=[]
z=[0]
i=-1
while i!=-8:
c.insert(i,a[i]+b[i]+z[i])
if c[i]>1:
if c[i]==2:
z.insert(i-1,1)
c[i]=0
elif c[i]==3:
z.insert(i-1,1)
c[i]=1
i=i-1



return c

num1=tabdil(adad1,mabna)
num2=tabdil(adad2,mabna)
result=jam(num1,num2)
print num1
print num2
print result

zaxzax
پنج شنبه 28 بهمن 1389, 12:37 عصر
در ضمن این برنامه واسه همه مبنا ها بود,اما باد فقط ب مبنا ۲ تغییرش دادم,فاع همین یه بخش های ازش باید حذف شه ک هنوز حذف نکردم
بازم میگم به الگوریتمش گیر ندین :D

r00tkit
پنج شنبه 28 بهمن 1389, 13:15 عصر
Traceback (most recent call last):
File "D:/sa.py", line 48, in <module>
result=jam(num1,num2)
File "D:/sa.py", line 32, in jam
c.insert(i,a[i]+b[i]+z[i])
IndexError: list index out of range

zaxzax
پنج شنبه 28 بهمن 1389, 18:22 عصر
این رو میدونم دوست من
سوال من دلیل این مشکل بود
بش فکر کردم
اما نفهمیدم چرا اینو میگه

MSK
چهارشنبه 04 اسفند 1389, 22:50 عصر
دوست عزیز a[-1] یعنی آخرین عضو لیست. a[-2] یعنی یکی مونده به آخر و به همین ترتیب. اگه می خواهی به اول لیستت اضافه کنی همیشه از a.insert(0, value) استفاده کن و برای اضافه کردن به آخر لیست از a.append(value).

trminator
چهارشنبه 05 مرداد 1390, 14:52 عصر
این کد رو نگاه کنید:
L=[]
while len(L)>0:
max=L[0]

خب این یک تکه کد هست. من خواستم حلقه while رو کاری کنم که شرطش همیشه درست باشه و با دستور break جایی که لازم شد از حلقه خارج بشه. به جای len(L) گذاشتم 1
ولی مفسر خطای list index out of range می گیره. چرا؟

برنامه زیر را ببینید:
این برنامه یک عدد را در درایه های آرایه ضرب می کند.

L=[[1,5,3,7],[4,3,2,6],[1,0,7,2]]
n=input()
i=0
while i<len(L):
j=0
while j<len(L[0]):
L[i][j]=n*L[i][j]
j=j+1
i=i+1
print L


چطور می توان کاری کرد که لیست L تغییر نکند و حاصلضرب عدد در ماتریس در لیست جدیدی نوشته شود؟

! aadoollaunsof
دوشنبه 10 مرداد 1390, 18:15 عصر
Great resources. Thank you so much. This will alot of help for alot of people. ameliastelT (http://www.tranniesonline.ws/00437tr/superoffseies.html) vigrx pills (http://penis-enlargement.day4sex.com)

code_baz
دوشنبه 10 مرداد 1390, 23:20 عصر
مشکل کدی که اول نوشتی در تابع jam و در لیست z هست (z[0]) اگر z[0,0,0,0,0,0,0,] رو داشته باشیم کد درست میشه adad1=input("adad 1 :") adad2=input("adad 2 :") mabna=2 def tabdil(a,mabna): i=-1 test=a c=[] if 11: if c[i]==2: z.insert(i-1,1) c[i]=0 elif c[i]==3: z.insert(i-1,1) c[i]=1 i=i-1 return c num1=tabdil(adad1,mabna) num2=tabdil(adad2,mabna) result=jam(num1,num2) print num1 print num2 print result