In [4]:
    
def cypro(k):                     # def 으로 cypro(k)라는 함수를 정의해준다.
    cl = 1                        # cl의 값을 1로 할당. (cl = 싸이클의 길이 = 1부터 시작)
    while k != 1:                 # while(조건반복) k≠1 인지 계속 비교 (k=1이면 반복중지)
        if k%2 == 0:              # 만약 k를 2로 나누었을때 나머지가 0이라면 (k가 짝수라면)
            k = k/2               # k는 k/2 으로 할당해준다.              
        else:                     # k가 홀수라면
            k = 3*k + 1           # k를 3*k+1 으로 할당해준다.
        cl += 1                   # 이때 cl 변수 값은 1 증가한다. 
    return cl                     # 증가한 cl 변수 값을 반환. 다시 반복. ** 여기까지가 cypro함수 정의
    
In [5]:
    
i=int(input('INPUT MIN NUM : '))  # 문자열 'INPUT MIN NUM : '을 받아 (소수점이 없는) 정수로 만들어줌
j=int(input('INPUT MAX NUM : '))
arw=[]                            # arw에 빈 리스트 할당. (빈 리스트를 만든 이유: 뒤에서 arw리스트에 항목을 추가하기 위함)
for t in range(i,j+1):            # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
    arw.append(cypro(t))          # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
print(max(arw))                   # arw의 최대값을 출력