[데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(6)
2023. 7. 8. 09:54ㆍIT 라이프/패캠 데이터분석 부트캠프 9기
반응형
1. while 반복문 실습
⌘ while문의 구성
- 초기식이 항상 따로 필요한 건 아니고 input()으로 표준입력받은 값을 초기값으로 사용 가능하다면 충분히 활용하여 코드를 심플하게 작성
i = 0 # 초기식
while i < 10 : # while 조건식 : True/False 판별
print('Hello World!') # 반복할 코드
i += 1 # 변화식
- % 연산자의 무궁무진한 활용 : 입력받은 음수인 정수를 1까지 출력하는데, 5개씩 탭구분, 그 후 줄바꿈 출력
- for문으로도 짜보기
# while문
num = int(input("숫자 입력: "))
num_line = 1
while num <= 1:
if num_line % 5 != 0: # 나머지 연산자의 용도는 앞으로도 무궁무진함
print(num, end='\t')
else :
print(num)
num_line += 1
num += 1
# for문
num = int(input("숫자 입력: "))
count = 1
for i in range(num,2):
print(i, end='\t')
if count % 5 == 0: # count=1로 시작해야 문제의도대로 찍힘
print()
count += 1
- 나머지 연산자를 활용한 다른 케이스
# 나머지 연산자를 활용한 다른 케이스
i = 0
while i < 10:
print((int(random.random()*10)%6)+1) # 여기서도 나머지값을 활용했네
i += 1
- random.random()과 함께 while문 실습
- 이거 진짜 디버깅 엄청 했음…while문 밖에서 사용자입력을 받는 바람에 꼬여버렸음…
import random
rst = random.randint(1,30)
#print(rst)
#num = int(input("숫자 입력: ")) # 여기서부터 받으면 처음에 숫자를 맞추든 못맞추든 print되는 게 없음
num = 0
while num != rst :
num = int(input("숫자 입력: "))
if num > rst :
print("너무 큽니다")
elif num < rst:
print("너무 작습니다")
else:
print("정답입니다")
- 무한루프와 break
- 무한루프는 조건문으로 break하는 시점을 줘야 하는 구조
- break는 break가 속한 가장 가까운 루프(for, while)에서 나감
- continue는 그 밑의 코드를 싹 무시하고, continue를 포함하고 있는 가장 가까운 반복문(for, while)의 시작점(콜론이 있는 라인)으로 돌아감
"""
1. 불필요한 코드를 줄이는 연습이 필요
-> if i < 73: 을 쓸 필요가 없음
2. 문자열이 너무 익숙해서 수학적인 접근에 약함
"""
i = 0
while True:
#if i < 73:
#if str(i)[-1] != '3':
if i%10 != 3: # 3으로 끝나게 하려면 이렇게 쓰면 되는군
i += 1
continue
if i > 73:
break
print(i, end=' ')
i += 1
⌘ 중첩된 for문
- 5개의 별이 5줄 출력
for i in range(5):
for j in range(5):
print("*", end='')
print()
- 왼쪽이 직각인 삼각형 출력
for i in range(10):
for j in range(i+1): # i가 아니라 i+1이었어야 함
print("*", end='')
print()
# 위와 같은 결과가 나오지만 for문 안에 if문을 사용
for i in range(5):
for j in range(5):
if j <= i: # 이 부분
print("*", end='')
print()
- 입력된 높이만큼 산 모양으로 별을 출력
"""
bbbb*
bbb***
bb*****
b*******
"""
height = int(input())
blank = height - 1 # 빈칸 = 높이 - 1
for i in range(height): # 높이
for j in range(height+i): # 가로 길이(가변)
if j < blank:
print(" ", end='')
else:
print('*', end='')
print()
blank -= 1
정리
별찍는 문제는 기초 때 다루는 거라고 하지만 그런거 치고는 마지막 문제는 어려웠다.
항상 string으로 접근하는 방식이 익숙해서인지 저 문제도 string으로 풀고 싶었지만 연산측면에서 숫자가 빠를테니 더 고민해서 인덱스를 사용하는게 더 좋은 방법이란 생각은 했다. 다만, blank와 별을 섞으니 눈에 잘 안보여서 가로 줄이 가변이라고 생각을 못해서 더 어려웠다.
더불어 나머지 연산자도 유용하게 쓰이는 걸 보면서 기초수학임에도 너무 익숙하지 않은 접근 방식이란 생각을 몇 문제 풀면서 계속 생각했다. 다행인건 이게 어렵거나 이해가 힘든 문제는 아니라는 점이다.
또 문제를 제대로 이해하지 않고 짜면서 문제를 파악하는 건 고치기 참 힘들단 생각이 들었고, 코드를 누더기처럼 짜기 보다는 되도록 불필요한 부분은 없애가며 만들어야겠단 생각도 여러 번 했다.
독학만 했었지 이렇게 배우는 건 처음인데 이번 기회에 while, while True가 덜 어렵게 느껴졌고, 막연히 알던 for문과 다른 쓰임새 등도 개념적으로 정리가 되었다. 물론 같은 반복문이니까 while로 짤 수 있는 코드면 for문으로도 짤 수 있으므로 실습을 그렇게 양쪽 다 해 보긴 했지만...개념 차이는 확실히 알겠다.
728x90
반응형
'IT 라이프 > 패캠 데이터분석 부트캠프 9기' 카테고리의 다른 글
| [데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(8) (0) | 2023.07.11 |
|---|---|
| [데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(7) (0) | 2023.07.10 |
| [데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(5) (0) | 2023.07.06 |
| [데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(4) (0) | 2023.07.05 |
| [데이터 분석 부트캠프] 데이터 분석을 위한 핵심 Tool Python(3) (0) | 2023.07.04 |