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)
결괏값은 역시 동일하게 출력된다.
하지만 조건문이 반복문 내에 존재하지 않기에 판별 횟수가 현저히 줄어들었다.
▼코드 정리는 ▼
300x250
'개발&코딩 > Python' 카테고리의 다른 글
파이썬 내장 메소드 dir() 사용법 (0) | 2022.06.16 |
---|---|
파이썬 버전별 출력법 + 기초적으로 숙지(제곱값, enumerate, range, 오버플로우) (0) | 2021.04.18 |
a 부터 b 까지의 합 - Python Algorithm loop_basic (2) | 2021.01.03 |
n까지의 합 - Python Algorithm loop_basic (0) | 2021.01.03 |
중간값 구하기 알고리즘 (Python_Algorithm, median) (0) | 2020.12.27 |
댓글