2014-11-20 9 views
0

이 오류가 왜 발생하는지 궁금합니다. IndexError : 목록 인덱스가 범위를 벗어났습니다. 전체 프로그램이 필요한 경우 업로드 하겠지만 코드의이 부분에 오류가 있습니다."IndexError : 목록 인덱스가 범위를 벗어났습니다."

import random 
Sign = ["+-*"] 
num = int(random.random()*2) 
operator = (Sign[num]) 
digit = int(random*10) 

이것은 배열의 임의 기호를 출력하기위한 것입니다.

답변

0

귀하의 목록에는 하나의 요소 만 있습니다. 이 시도 :

Sign = ["+", "-", "*"] 
+0

이렇게하면 코드의 일부가 수정됩니다. 고마워 친구! – swagdaddy

1

random.random()가 0보다 크고 1보다 부동 소수점 수를 반환, 그래서 int(random.random()*2)는 오직 0이 발생하거나 1 random 모듈은 무작위 정수를 반환하는 특정 기능을 가지고 지정된 범위는 "자체적 인"임의 정수 알고리즘을 사용하는 것보다 (그리고 일반적으로 더 균일 한 결과를 사용하는 것보다) 더 간단합니다.

그러나 random에는 시퀀스의 임의의 멤버 (예 : str, 튜플 또는 목록)를 반환하는 함수가 있으므로 임의 연산자를 선택하는 데 사용하는 것이 좋습니다. operator 표준 모듈의 이름이므로 예

#! /usr/bin/env python 

import random 

sign = "+-*" 

for i in range(10): 
    op = random.choice(sign) 
    digit = random.randint(0, 9) 
    print op, digit 

전형적인 출력

+ 7 
* 9 
+ 0 
* 6 
* 8 
* 5 
+ 0 
- 1 
- 6 
- 3 

은 그 코드 op으로 변수 이름을 바꾸었다. 자신의 변수에 해당 이름을 사용하는 것은 오류가 아니지만 해당 모듈을 가져 오려는 경우 문제가 발생할 수 있습니다. 또한 코드를 읽는 사람들에게 혼란을줍니다.