2010-03-21 4 views
5

파이썬에서는 사용자가 숫자 X를 입력 한 다음 프로그램이 for 루프를 입력하면 사용자가 X 값을 입력합니다. 변수 이름을 자동으로 증가시키는 것은 나쁜 생각입니까?변수 이름을 늘리는 방법/나쁜 생각인가요?

예 :

user inputs '6' 
value_1 = ... 
value_2 = ... 
value_3 = ... 
value_4 = ... 
value_5 = ... 
value_6 = ... 

내가 변수 사용자 입력의 수를 가질 수 있도록 변수 이름처럼 증가 할 수 있습니까? 또는 모든 새로운 값을 목록에 추가하는 것과 같이 완전히 다른 방법을 사용해야합니까?

+5

목록을 대신 사용하십시오. –

+2

또는 인덱스 값에 의해 키워지는 사전. –

+1

그래 목록/사전을 사용하는 것이 더 낫다는 것을 이해합니다. 호기심에서 벗어난 이러한 질문은 질문에 따라 할 수 있습니까? – tom

답변

11

모든 값을 목록에 추가해야만 쓸모없는 변수와 마술로 네임 스페이스를 버리지 않고 쉽게 값을 반복 할 수 있습니다.

8

I는리스트 상에 모두 새로운 값을 추가로 완전히 상이한 방법을 사용 하는가?

예, list을 사용할 수 있습니다. 이 경우 mapping을 사용할 수도 있습니다.

는 변수 이름이 horrifyingly 한 나쁜 생각

그 번호와 같은 증가합니다.


"그러나 호기심에서 벗어난 이러한 질문은 요청 된 방식으로 해결할 수 있습니까?"

네,하지만 분명히 끔찍한 생각입니다. 그래서, 그것을 보여줄 필요가 없습니다. 시도조차도 끔찍하고 끔찍한 일입니다.

6

물론 목록이나 사전을 사용하는 것이 올바른 방법이지만 exec()를 사용하여 명명 된 변수를 만들 수 있습니다. 당신은 (등등의 삽입, 삭제, 정렬 및,) (렌의 생각) 목록과 사전이 제공하는 모든 편리한 작업을 놓칠 것이다, 그러나 그것은 가능 :() 받아 실행하는

count = raw_input('Number of variables:') 
for i in xrange(count): 
    exec('var_' + str(i) + ' = ' + str(i)) 

간부 유효한 파이썬 표현식을 포함하는 문자열. 그래서 위의 코드는 즉시 코드를 생성하고 실행합니다.

2

아마도 도움이 될 것입니다.

filenamee = 'Value_' 
counter1 = 1 
counter2 = 2 
list1 = [] 
list2 = range(30) #random number, given len needed 
for x in list2: 
    counter1 = str(counter1) 
    full_name = (filenamee+counter1) 
    list1.append(full_name) 
    counter1 = counter2 
    counter2+=1 

for x in list1: 
    print(x) 

증분 변수를 만들려는 사용자에게 적합합니다. 나는 이것이 깨끗한 프로그래밍인지 아닌지 전혀 모른다. :)

돌보기

관련 문제