2013-10-26 2 views
-3

목록 번호의 숫자를 계산하는 프로그램을 만들고 sequence_len 숫자의 합계를 검색하려고합니다. 10 분이면 멈춰야합니다. 1.이 코드를 사용하면 오류가 있습니다. 나는 어떻게해야합니까? 합계 = 총 + (list_n [i + n]) IndexError : 목록 색인이 범위를 벗어났습니다.범위를 벗어났습니다.

2. 나는 그 때의 합계를 찾으면 첫 번째를 중지하고 싶습니다. 내가 끝내거나 "i = len (list_n)"이라고 써야하는 것처럼 끝에 "끊어"씁니까?

number = 1234 
sequence_len = 2 

list_n=[] 
total=0 
b="false" 
list_t=[] 

for j in str(number): 
    list_n.append(int(j)) 

c=len(list_n) 

for i in list_n: 
    n=0 
    while n<sequence_len: 
     total=total+(list_n[i+n]) 
     n=n+1 
    if total==10: 
     b=true 
     seq=0 
     while seq>sequence_len: 
      list_t.append(list_t[i+seq]) 
      seq=seq+1 
     break 
    else: 
     total=0 
    if b=="true": 
     break 


if b=="false": 
    print "Didn’t find any sequence of size", sequence_len 
else: 
    print "Found a sequence of size", sequence_len ,":", list_t 
+0

나는 질문의 두 번째 부분을 분명히 알지 못했다. – thefourtheye

답변

1

당신이

for i in list_n: 

i이 인덱스를 참조하지만,리스트 요소 자체에되지 않습니다 말할 때. 그냥 인덱스를 원하는 경우,

for i in range(len(list_n)): 

len(list_n)

당신에게 목록의 크기를 줄 것이다 range(len(list_n))은 0에서 시작하여 당신은 오류의 몇 가지있다 len(list_n) - 1

+0

나는 그것을 변경했으나 여전히 "total = total + (list_n [i + n])"범위를 벗어났다. – user2923032

+0

@ user2923032 이는 while 루프'while n thefourtheye

+0

예. 그래서 내가 무엇을 할 수 있니? – user2923032

2

로 끝나는 숫자의 범위를 제공 할 것입니다. 먼저 기본에 :

이것은 True에 필요
b=true 

, 그렇지 않으면, 파이썬은 true 변수를 찾습니다.

둘째, i에는 실제로 해당 반복 (루프)의 변수 값이 들어 있습니다. 예를 들면 다음과 같습니다.

>>> l = ['a', 'b', 'c'] 
>>> for i in l: print i 
a 
b 
c 

인덱스가 정수 여야하므로 인덱스로 사용할 수 없습니다. 그래서, 당신은 enumerate를 사용한다 무엇을해야하는지,이 인덱스 값 모두의 tuple를 생성합니다, 그래서 뭔가 같은 :

for i, var in enumerate(list_n): 
    n = 0 

행동 열거의 예 :

>>> var = enumerate([1,6,5,32,1]) 
>>> for x in var: print x 
(0, 1) 
(1, 6) 
(2, 5) 
(3, 32) 
(4, 1) 

는 그리고이 문장은 논리적 문제는 나는 생각했다한다 :

total = total + (list_n[i + n - 1]) 

당신이 목록에서 10의 합을 얻고 싶다면 번호, 당신은이 무차별 기술을 사용할 수 있습니다 : 당신이 목록에서 10 세에서 번호를 원한다면, 그래서

>>> list_of_n = [1,0,5,4,2,1,2,3,4,5,6,8,2,7] 
>>> from itertools import combinations 
>>> [var for var in combinations(list_of_n, 2) if sum(var) == 10] 
[(5, 5), (4, 6), (2, 8), (2, 8), (3, 7), (4, 6), (8, 2)] 

을, 당신은 combinations(list_of_n, 3) 대신 combinations(list_of_n, 2)을 둘 것입니다.

관련 문제