ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [부스트코스] 모두를 위한 파이썬(PY4E) 3주차 루프와 반복문
    PYTHON/부스트코스 PY4E 2022. 9. 14. 00:38
    728x90

    2주차는 5. 루프와 반복문에 대해 학습했다

    05. <루프와 반복문>

    핵심 키워드 미리보기

    반복문   

    while 루프     break      continue

    for 루프     

     

    **모든 반복문은 if 조건식과 마찬가지로 들여쓰기를 사용해서 조건을 나타낸다    

     

    While 루프

     

    위에 코드를 해석해보면

    n >0 동안 계속 실행해라 (즉, n=0이면 루프가 멈춤)

    n을 출력해라

    n-1을 해라

    계속 n-1이 반복되다가 n이 0이되는 순간 멈추게 된다

    멈추면 Blastoff!가 출력되고 마지막으로 0이 출력된다

     

    break

    예시 코드와 함께 break는 언제 쓰이는지 살펴보자

    While True: 라는 뜻은 계속 반복하라는 뜻이다

    그렇기때문에 해당 코드는 오류를 발생시키지 않으면 멈추지 않는다

    하지만 아래 코드에서 done을 입력하면 break는 해당식을 멈추고 해당식 바깥으로 가서 맨마지막을 수행하라는 뜻이다

    그래서break 입력시 수행이 중단된다

    그리고 루프를 빠져나와 맨 마지막으로 가니까 Done!이 출력된다

     

    continue

    예시 코드와 함께 continue는 언제 쓰이는지 살펴보자

    #을 입력시 continue를 해라라고 나와있다

    continue아래 식을 다 무시하고 처음으로 돌아가서 계속해라라는 뜻이다

    그래서 #을 입력하자 아무것도 출력되지 않고 다시 입력하라고 뜬다

    #이나 done 외의 문자를 입력시 해당 줄을 수행한다

    done은 아까 위에 코드와 마찬가지로 break니까 루프를 빠져나와 마지막 줄로 가서 출력한다

    for 루프

     

    for문도 while문처럼 반복할 때 쓴다

    위에 코드를 보면 for i in [5,4,3,2,1]: [5,4,3,2,1]을 다 사용할 때까지 반복하라는 것이다

    i자리에는 어떤 문자를 써도 되고 심지어 필요없는경우 _ 만 적고 비워놓을 수도 있다

    왜냐하면 i자리에 [5,4,3,2,1]이 차례로 들어가서 i는 의미가 없기 때문이다

    그래서 출력문을 보면 5,4,3,2,1차례로 다 출력 후 루프에서 나온 뒤 마지막 출력물 Blastoff!가 나온 것을 볼 수 있다

     

     

     

    또다른 for문 코드를 살펴보자

    이번에는 직접 리스트를 넣지 않고 리스트를 변수에 주고 변수를 이용해서 코드를 만들었다

    리스트에 대해서는 다른 강의에서 살펴보도록 하겠다

    friends에 리스트를 주고 for friend in friends:를 이용해 반복했다

    ['Connect''Korea''NHN']를 friend에 하나씩 넣으라는 얘기다
    그리고 Happy New Year!! friend를 반복해서 출력해라라는 뜻이다
    모든 반복이 끝나면 루프를 빠져나와 마지막 줄이 시행된다
     
     
    <08.리스트강의 들으러 가기>
     

    모두를 위한 파이썬 (PY4E)

    부스트코스 무료 강의

    www.boostcourse.org

     

    반복문 응용

    반복문을 활용해서 가장 큰 수 찾기

    -1과 다른 수들을 하나씩 차례로 비교해서 가장 큰 수를 찾아낸다

    만약 이전에 가장 큰 값보다 크면 largest_so_far에 넣고 아니면 그냥 넘어간다

    그리고 마지막으로 가장 큰 수를 출력해준다

     

    반복문을 활용해서 숫자 개수세기

    숫자개수를 세어줄 zork를 0으로 초기화한다

    numbers가 하나씩 들어갈 때마다 zork는 1씩 증가한다

    하나씩 나열해서 보여주고 마지막에 최종 개수를 보여준다

     

     

    3주차 미션부터는 난이도가 어려웠다

     

    3주차에 주어진 미션도 2주차와 마찬가지로 총 4가지 문제였다

    Q1. 숫자를 입력 받고 그 숫자의 구구단을 출력하는 함수를 만들어 봅시다. 다만 아래의 조건을 만족해 주세요.

    더보기
    def gugudan(number): #구구단 함수 정의
      print("몇단?:",number) #입력받은 값 출력
      for i in [number]: #해당 숫자 출력
        for j in range(1102): #홀수만 곱함
          if i*j < 50:#곱한 값이 50이하일때만 출력   
            print(i, "x" ,j, "=",i*j)

     

    number = int(input("몇단?:")) #숫자 입력받기
    gugudan(number)

    Q2. 가위바위보 업그레이드 버젼을 함수로 만들어 봅시다. 아래와 같은 조건을 만족해 주세요.

    더보기
    import random
    #변수 횟수 0으로 지정해놓기
    YouWin = 0
    ComWin = 0
    Draw = 0

    #반복 횟수 입력받기
    num = int(input("몇판을 진행하시겠습니까?:"))
    #반복문
    for i in range(1,num+1):
    #사용자 입력
      you = input("(가위(0), 바위(1), 보(2)) 중에서 하나를 선택하세요: ")
      if not(you == "가위" or you == "바위" or you == "보") :
        print("다시입력하세요")
        break
    #랜덤값 지정하기
      number = random.randint(0,2)
      if(number == 0):
        com = "가위"
      if(number == 1):
        com = "바위"
      if(number == 2):
        com = "보"
    #사용자와 컴퓨터의 입력 확인
        print("나: ", you, "컴퓨터: ", com)

    #승패 결과 출력
      if (you == com):
        print("비겼음!")
        Draw+=1
      elif(you == "바위" and com == "보"):
        print("컴퓨터의 승리!")
        ComWin+=1
      elif(you == "가위" and com == "바위"):
        print("컴퓨터의 승리!")
        ComWin+=1
      elif(you == "보" and com == "가위"):
        print("컴퓨터의 승리!")
        ComWin+=1
      elif(you == "보" and  com == "바위"):
        print("나의 승리!")
        YouWin+=1
      elif(you == "바위" and  com == "가위"):
        print("나의 승리!")
        YouWin+=1
      elif(you == "가위" and com == "보"):
        print("나의 승리!")
        YouWin+=1
      print("나:",you)
      print("컴퓨터:",com)  
    # 전적 확인
    print("나의 전적: 승:",YouWin,"무:",Draw," 패:",ComWin)print("컴퓨터의 전적: 승:",ComWin,"무:",Draw," 패:",YouWin)

    Q3. 2개의 숫자를 입력하여 그 사이에 짝수만 출력하는 함수를 만들어 봅시다. 그리고 중앙값도 함께 출력 해봅시다.(단, 중앙값이 짝수가 아닐 경우에는 중앙값은 출력을 하지 않고, 짝수인 수만 출력한다)

    더보기
    def find_even_number(n,m):
      for find_even_number in range(n ,m+1): # 두 수 사이범위
        if find_even_number % 2 == 0#2로 나눠서 0인 경우
          if find_even_number == mid: #중앙값이 짝수 인 경우 중앙값 출력
            print(mid,"중앙값"
          print(find_even_number,"짝수")  
     
     
     
    n = int(input("첫번째 숫자 입력:")) #첫번째 숫자 받기
    m = int(input("두번째 숫자 입력:")) #두번째 숫자 받기
    mid = int((n+m)/2#두수의 중앙값    

     

    find_even_number(n,m)

    Q4. 2개의 숫자를 입력하여 그 사이에 소수가 몇 개인지 출력하는 함수를 만들어 봅시다.

    https://codingdojang.com/scode/503?orderby=time&langby=python 

     

    코딩도장

    프로그래밍 문제풀이를 통해서 코딩 실력을 수련

    codingdojang.com

    지난 미션에서 가장 복잡하다고 생각했던 가위바위보 문제는 응용을 하도록 문제가 출제되었다

    각각 문제마다 조건들이 있어서 조건을 충족시키는 것이 까다로웠다

    그래서 아무리 생각해도 모르겠는 문제는 조건 생각하지 않고 작동만 할 수 있게 간신히 구현해서 제출했다

    다른 팀들 미션을 보면서 대단하다고 느꼈다

     

     

    <05.루프와 반복문 강의 들으러 가기>

    https://www.boostcourse.org/cs122/lecture/315087?isDesc=false 

     

    모두를 위한 파이썬 (PY4E)

    부스트코스 무료 강의

    www.boostcourse.org

    <오늘 올린 코드 자료>

    https://colab.research.google.com/drive/1pTz7k2QjUMHsxUqutBzhyqXlMzXL0yOi?usp=sharing 

     

    부스트코스 py4e 3주차

    Colaboratory notebook

    colab.research.google.com

    <미션문제 코드만 모아보기>

    https://colab.research.google.com/drive/150otXatYy8-vd5HPDt15WQazA-mgvpp-#scrollTo=BZDSDKBg081B&line=1&uniqifier=1

     

    mission3

    Colaboratory notebook

    colab.research.google.com

Designed by Tistory.