본문 바로가기
개발&코딩/Python

반복문을 이용한 특수문자 출력

by 우동이 2021. 1. 4.
300x250

기호를 이용해 출력을 할텐데

반복문을 사용해서 해보도록 하겠다.

+와-를 번갈아가며 출력하는 코드를 짤텐데

 

 

+와 - 를 번갈아가며 출력

# +와 -를 번갈아가며 n 회 출력

n = int(input("몇 개를 출력할지 입력 >> "))

for i in range(n):
    if i%2: #짝수일때는 - 가 출력
        print('-',end='')
    else: # 홀수일때는 + 가 출력
        print('+',end='')
        


print()


# 문제점1 : for 반복시마다 if문 수행
# 문제점2 : 상황에 따른 유연한 수정 불가능

출력은 잘 되고 기초적인 언어를 배울때에는 이렇게 for 문을 통해 

바로 조건문으로 +와 -를 구분하는게 맞지만

이렇게 하면 두가지의 문제점이 생긴다.

 

for문이 반복시마다 if 와 else 문 두 구문을 거쳐야 하기 때문에 판단 횟수가 증감 하는것은 물론이고

너무 딱 들어맞아 있는 코드라 수정의 범용성도 적다.

위 코드를 살짝 손봐서 더 나은 코드를 만들 수 있다.

 

+와 - 를 번갈아가며 출력(fixed)

 

# 첫번째 코드 보완
# +와 -를 번갈아 n 회 출력
n=int(input("출력할 횟수 n 을 입력하시오 >> "))

for _ in range(n//2):
    print('+-',end='') # 출력기호를 +-로 변경하는 대신 n을 절반으로 나눈다
if n%2:
    print('+',end='') # n이 2로 나눠지면 +를 출력한다.
print()    


# 무시하고 싶은 값은 _(언더스코어) 로 처리 후 인덱스를 사용하지 않을 수 있음.

잘 출력이 되는 걸 알수있다.

그리고 조건문을 반복문 밖으로 빼내어 최종 한 번만 판단하게 함으로

반복시마다 두 번의 판단을 거쳤던 코드가

최종 한 번의 판단만을 하는 코드로 바뀌었다.



이번엔 *을 n회 출력하고 l마다 줄바꿈하는 코드를 작성해보겠다.

 

*을 n회 출력 l 로 줄바꿈

# *을 n개 출력 l마다 줄바꿈


n=int(input("출력 횟수를 입력하시오 >> "))
l=int(input("줄 바꿈 제한을 입력하시오 >> "))

for i in range(n): # 반복 시마다 조건 판별
    print("*", end='')
    if i % l == l-1:
        print()
        
if n%l:
    print()

*의 출력과 줄바꿈이 잘 이루어진다.

하지만 이 코드 역시도 반복문 안에 조건문이 들어가 있기 때문에

매 반복마다 조건을 판별해야 하기 때문에 효율적이지 못하다.

 

 

*을 n회 출력 l 로 줄바꿈(fixed)

# *을 n회 출력 l마다 줄바꿈
# print_star는 반복마다 if문 수행 비효율


n=int(input("*을 몇회 출력 >> "))
l=int(input("몇 마다 줄바꿈 >> "))

for _ in range(n//l): # 반복수행
    print('*' * l)
    
rest = n% l

if rest: # 조건 판단 1회
    print('*'*rest)

결괏값은 역시 동일하게 출력된다.

하지만 조건문이 반복문 내에 존재하지 않기에 판별 횟수가 현저히 줄어들었다.

 

▼코드 정리는 ▼

 

 

chapter01_basic

maximum + time

www.notion.so

 

 

300x250

댓글