반응형

최근 두 수의 최대공약수를 어떻게 동적변수를 사용하여 list로 반환하는지에 관련한 문의가 들어와

꽤 오랜시간 고민해 보았다.

고민한 결과를 아래의 코드로 정리하여 공유하도록 하겠다.

동적변수로는 전역변수인 global()을 사용하였다.

하지만 보통 동적변수를 이용하여 변수를 생성하면 변수 관리가 힘들다는 단점이 있다.

변수가 자동생성되기 때문에 구문에 따라 어떤 변수가 어떤 값을 가지고 있는지 잘 기억해 두어야 한다.

그래서 각 상황에 맞게 적절히 사용하길 바란다.

 

코드
# 두 수를 입력받는 리스트 생성하기
input_list = list(map(int,input().split()))

#for 문을 사용하여 입력 받은 두 수 각각의 약수 구하기
for i in input_list:
    a = globals()['num_{}'.format(i)]= list()
    for j in range(i+1):
        try:
            if i/j - i//j ==0:
                a.append(j)
     
        except:
            pass
    print('num_{}: '.format(i),a) #입력받은 약수 출력
     
###실제 변수 리스트는 num_입력숫자1, num_입력숫자2 라는 이름의 변수에 저장되어있음을 유의##

출력:

여기서 주의 할 점은 입력받은 10, 20의 약수 리스트

각각 num_10, num_20 이라는 변수에 저장되어 있음을 유의하자.

 

반응형

+ Recent posts