본문 바로가기
프로그램

[파이썬] 문제 : 정수 입력 받아서 각 자리수 만큼 # 출력

by 오디세이99 2023. 5. 30.
728x90
반응형

(문제)

정수를 입력 받아 정수만큼 # 기호를 출력하는 프로그램이다.

두 자리 이상의 정수는 자릿수를 분리하여  # 기호를 출력한다

중첩 for문을 사용하고, 실행 결과는 다음과 같으며,

다음 조건을 만족하는 프로그램을 작성하세요.

-정수를 입력 받아 저장하는 변수: num

-중첩 for문의 제어변수: x, y

-# 기호 개수 변수: sharp_num

-첫 번째 for문의 범위: range(len(num))

-두 번째 for문의 범위: range(sharp_num)

 

[실행결과]

정수 입력:35
###
#####

 

 

(방법)

num = input('정수 입력:')       # 입력 받기. 문자열로 입력 받게 됨.
for x in range(len(num)):       # len(num)으로 문자열의 요소수.  len('35') 는 2, len('5') 는 1, len('123')은  3
    sharp_num = int(num[x])     # '35'일때 len('35')에 의해서 x는 0,1 이 됨. num[0] = '3', num[1] = '5' 가 됨. int함수에 의해 문자열이 정수가 됨
    for y in range(sharp_num): # '3'일때 sharp_num은 3이 됨. y는 0,1,2가 됨.
        print('#',end='')       # '#'를 하나씩 출력하는데 end=''에 의해서 줄바꿈이 되지 않음. 그래서 계속 '###' 와 같이 출력하게 됨
    print()                     # 줄바꿈. '35'애서 '3'일때 '###' 출력하고 줄바꿈 하게 됨

 

또 다른 방법 (문제의 요청에서 중첩 for문 사용이라고 하니까 아래 코드는 요청에 맞지는 않음)

num = input('정수 입력:')       # 입력 받기. 문자열로 입력 받게 됨.
for x in range(len(num)):       # len(num)으로 문자열의 요소수.  len('35') 는 2, len('5') 는 1, len('123')은  3
    sharp_num = int(num[x])     # '35'일때 len('35')에 의해서 x는 0,1 이 됨. num[0] = '3', num[1] = '5' 가 됨. int함수에 의해 문자열이 정수가 됨
    print('#'*sharp_num)        # '#'*3 이면 '#'를 3개 출력하게 됨
728x90
반응형

댓글