본문 바로가기
Data Science/Python Introduction

[3일차] 반복문 완료, 그리고 복습하면서 연습문제 풀어봤음

by 루크 Luke 2021. 10. 11.
반응형

반복문 개념은 다시 들어도 좋은 것 같다! 오늘도 꿀 강의였다.

 

[반복문]

- 특정 실행을 반복하는 것

- 프로그래밍이 간결하고 유지 보수가 쉬움

- 횟수에 의한 반복 / 조건에 의한 반복

- 횟수 : 횟수 만큼 반복 실행 -> for

- 조건 : 조건에 만족할 떄까지 반복 실행 -> while

 

[for문 : 횟수에 의한 반복문]

ex) 대량 메일 또는 문자 발송, 인사말 반복, mp3 반복 재생

- for ~ in

for 변수 in 범위:
	실행문

- in 뒤에는 iterable한 자료 구조가 나오면 됨

- 자료 구조 안에 요소들이 하나씩 출력된다고 생각하면 된다.

- range(5) = [0, 1, 2, 3, 4]

- N번 반복하고 싶으면 range(N)이라고 기억하면 좋을 것 같다.

- 구구단 7단을 for 문으로 코딩해보기

- pass 키워드 : 코딩을 나중에 할거면 pass를 넣으면 에러가 뜨지 않음

- (코드 블록) 들여쓰기도 신경써야 함! 통일!

 

[range()]

- range(시작, 끝, 단계) 

- 끝 번호는 포함하지 않는 것이 원칙

ex) range(1, 11, 1) - 1부터 10까지 1씩 증가하는 리스트

- 단계가 1인 경우는 마지막 요소 생략 가능 ex) range(0,11,1) -> range(0,11)

- 시작이 0인 경우는 처음 요소 생략 가능 ex) range(0,11) -> range(11)

- 예제) 사용자가 반복의 시작과 끝을 입력하면 1씩 증가하는 반복문을 만들어보라.

 

[while문 : 조건에 의한 반복]

- 조건에 만족하면 반복 실행, 그렇지 않으면 반복 중단

ex) 매일 아침 기상 알람, 게임 반복 실행, 타이머

while 조건식 :
	실행문

-  while 문으로 구구단 7단 코딩

- while 문에서도 pass 사용 가능하고, 들여쓰기 신경 쓰기!

- 조건식의 결과가 항상 True인 경우에 무한 루프.

- 그래서, 조건식에 그냥 True / Flase 등 논리형 데이터를 사용하면 무한 루프를 이용할 수 있음

- 무한루프 활용해서 다음 예제 풀기

50과 100 사이의 랜덤 숫자를 뽑아주는 것은 random 모듈의 randint 함수 = random.randint()

 

Cf. for문과 while문의 비교

- for문이 적합한 경우 : 횟수에 의한 반복

- while문이 적합한 경우 : 조건에 의한 반복

 

[continue / else / break]

- continue : 반복 실행 중 continue를 만나면 실행을 생략하고, 다음 반복 실행문으로 넘어간다.

- continue 아래 있는 것은 실행 하지 않는 것!

ex) 100 미만의 정수 중 7의 배수만 출력하는 반복문을 코딩하면, continue 아래는 if 조건에 따라 실행 여부 결정

for i in range(100):
    if i % 7 != 0:
    	continue
    print(i)

 

- else : 반복문이 종료된 후 실행된다.

ex) 100 미만의 정수 중 7의 배수만 출력하는 반복문을 실행한 후, 이 배수의 갯수를 구할 수 있음

cnt = 0
for i in range(100):
    if i % 7 != 0:
    	continue
    print(i)
    cnt += 1
    
else:
    print(cnt)

 

- break : 실행을 중단하고 반복문을 빠져나오자!

- break는 무한 루프에서 이용하면 좋다.

ex) 5보다 커지면 반복문 빠져나오도록 코딩

num = 0

while True:
    print("Hello")
    num += 1
    
    if num >= 5:
    	break

print("The END!")

예제) 10의 팩토리얼(10!)을 계산하는 과정에서 결과값이 50을 넘을 때의 숫자를 구하자.

 

[중첩 반복문]

- 반복문 안에 또 반복문

예시) 별표를 하나씩 증가하면서 출력됨

for i in range(1, 10):
    for j in range(i):
        print('*', end='')  #개행하지 않음
    print()  #개행함

예시2) 별표를 하나씩 감소하면서 출력됨

for i in range(10, 0, -1):
    for j in range(i):
        print('*', end='')  #개행하지 않음
    print()  #개행함

예시3) 구구단 전체 출력

중간에 " / " 말고 \t로 탭 넣어줘도 좋다.

 

[파이썬 퀴즈]

- 파이썬 언어를 만든 사람 : 귀도 반 로섬

- 파이썬 특징

 1) 문법 구조가 쉬워서 비전공자도 쉽게 배울 수 있다.

 2) 언어도 뛰어나지만, 모듈(라이브러리)가 많아서 개발 시간이 단축된다.

 3) 무한 정수를 처리할 수 있다.

 4) 온라인상에 커뮤니티가 잘 형성되어 있어 많은 정보를 얻을 수 있다.

- Pycharm 특징

 1) 훌륭한 코딩 툴이며, 무료의 프로그램이다.

 2) JetBrains에서 만들었으며, 누구나 무료로 이용할 수 있다.

 3) Pycharm을 설치하기 전에 Python을 설치해야 한다.

 4) Phcharm을 이용해서 코딩을 하고 파일을 저장할 수 있다.

 

[연습문제 - 데이터와 변수]

- len() : 문자 길이를 반환함

- find() : 특정 문자열의 위치를 찾아 반환함

article = '~~~~~~'

index_word = article.find("객체지향")
print(index_word)

- str[0] : str에 저장된 문자열에서 첫 번째 문자를 반환함

- indigit() : 숫자인지 확인 -> 숫자이면 True, 아니면 False

if weight.indigit():
    weight = int(weight) / 10

- datetime 모듈 : 날짜와 시간 정보를 알려주는 모듈

import datetime

today = datetime.datetime.today()  # 오늘 날짜

myAge = input("나이 입력: ")
if myAge.isdigit():
    afterAge = 100 - int(myAge)
    myHundred = today.year + afterAge  # today.year은 오늘의 연도

    print(f'{myHundred}년({afterAge}년 후)에 100살!')

else:
    print("잘못 입력했습니다")

 

[연습문제 - 연산자]

- 상품 가격과 지불 금액을 입력 받아서, 거스름돈을 거스르는 방법을 출력하는 프로그램 만들기

- 점수의 최고점과 최저점의 차이를 출력하는 프로그램

result = []
Kor = int(input("국어 점수 입력: "))
Eng = int(input("영어 점수 입력: "))
Mat = int(input("수학 점수 입력: "))

sum = Kor + Eng + Mat
avr = sum / 3

print(f"총점: {sum}")
print("평균: %.2f" %avr)
print("-"*30)

result.append(Kor) ; result.append(Eng) ; result.append(Mat)
max_r = max(result) ; min_r = min(result)
if max_r == Kor:
    writeMax = "국어"
elif max_r == Eng:
    writeMax = "영어"
else:
    writeMax = "수학"

if min_r == Kor:
    writeMin = "국어"
elif min_r == Eng:
    writeMin = "영어"
else:
    writeMin = "수학"

print(f"최고 점수 과목(점수): {writeMax}({max_r})")
print(f"최저 점수 과목(점수): {writeMin}({min_r})")
print(f"최고, 최저 점수 차이: {max_r - min_r}")
print("-"*30)

- format(숫자, ',') : 천 단위로 반점 붙여줌

- 금액, 이율, 거치기간 입력하면 복리 계산하는 복리 계산기

- 60m 올라갈 때마다 기온이 0.8도 내려간다고 할 때, 고도를 입력하면 기온이 출력되는 프로그램 (지면온도는 29도)

- 197개의 빵, 152개의 우유를 17명의 학생이 동일한 갯수로 나눠 가지고, 남은 갯수를 표시해주는 프로그램

- divmod(나눠질 수, 나눌 수) = (몫, 나머지)

 


온라인 강의 3일차 후기

오 문제 풀어보니까 공부한 것들이 더 머리에 들어오는 느낌이다.

이래서 다들 이론만 보지 말고, 코테 바로 시작해서 부딪쳐보라는 건가..?

얼른 강의 다 듣고 후다닥 따라가야지

나도 얼른 데이터 사이언티스트 하고 싶다.. 헝헝

 

 

- 네카라쿠배 데이터사이언스 오프라인 1기 수강 中

https://zero-base.co.kr/

 

제로베이스 - 밑바닥부터 끝까지 듣는 온라인 강의

무조건 간다! 개발자 스쿨 '네카라쿠배', 끝까지 공부하는 '온라인 완주반', 전문가가 베스트셀러를 해석해 주는 '한달한권' 등 교육 서비스로 삶의 전환점을 제공하는 제로베이스입니다.

zero-base.co.kr

 

반응형

댓글