파이썬 기초 | 반복문 for문 | for~in range() | 중첩 for문 | while문 | break문 | continue문 | import random 이용하기

    728x90

     

    1. 반복문 

    : 특정 부분을 원하는 횟수만큼 반복하는 구문

     


    2. for문

    : for 변수 in range (시작값, 끝값 +1, 증가값) :

          ---  반복할 문장  ---

    : 반복할 횟수를 알 때

     

    for i in range(3) :
        print("난생처음 파이썬은 재미있습니다. ^^")
    for i in range(0,3,1) :
        print("난생처음 파이썬은 재미있습니다. ^^")

    : range(시작값, 끝값 +1, 증가값) : 지정된 범위의 값을 반환함

    ex. range(0,3,1) : 0에서부터 2까지 +1씩 증가하는 값들을 반환함.

    - 증가값을 생략할 경우 1로 인식함.

    - 따라서 range(0,3,1)은 range(0,3)과 동일함.

    - 시작값이 0이기 때문에 시작값도 생략 가능함.

    - 따라서 range(3)만 써도 range(0,3,1)과 동일하게 인식함.

    for i in range(1,11,1):
        print(i, end ='')
    for i in [0,1,2] :
        print("난생처음 파이썬은 재미있습니다. ^^")

    : 리스트 [ ] 이용

     

     

    [연습문제]

     

    *학생 줄 세우기

    i = 0
    fact = 1
    friends_num = 5
    
    for i in range(1, friends_num+1, 1) :
        fact = fact * i
        print(fact)
    print("A, B, C, D, E 학생들을 순서대로 세우는 경우의 수:", fact)

     

     

    ▶ for문을 활용한 반복적인 덧셈

    # 1~10까지 합 구하기
    
    i = 0
    hap = 0 
    
    for i in range(1,11,1) :
        hap = hap + i
        print(hap) # hap을 print해보면 hap이 어떻게 누적되고 있는지 볼 수 있음.
    print("1에서 10까지의 합: ", hap)

    # 1000~2000 사이 홀수의 합 구하기
    
    i, hap = 0,0
    
    for i in range(1001, 2001, 2) :
        hap += i 
    
    print("1000에서 200까지의 홀수 합: ", hap)
    # 1000~2000 사이 짝수의 합 구하기
    
    i, hap = 0,0
    
    for i in range(1000, 2001, 2) :
        hap += i 
    
    print("1000에서 200까지의 짝수 합: ", hap)

     

    ▶ 중첩 for문

    : for문 안에 또 for문을 사용할 수 있음

    : 중첩 for문의 실행 횟수 = (바깥 for문 반복횟수) X (안쪽 for문 반복횟수)

    for i in range(3) :  # 0,1,2 가 들어감
        for k in range(2) : # 0,1이 들어감
            print("파이썬은 쉽습니다.^^ (i값:", i, ", k값:", k, ")")

     

    [연습문제]

     

    * 2단부터 10단까지 구구단 계산기 만들기

    # 2단부터 10단까지 구구단 계산기 만들기
    
    for i in range(2,11,1) :
        print(i, "단")
        for k in range(1,10,1) :
            print(f"{i} X {k}= {i*k}")
        print()
    for i in range(2,11,1) :
        for k in range(1,10,1) :
            print(i, "X", k, "=", i*k)
        print("")
    print("구구단 완료입니다.")

     

     


    3. while문

    : 반복횟수가 정해져 있지 않을 때 사용

    cf. for문: 반복할 횟수를 range()에서 결정한 후 그 횟수만큼 반복

     

    for i in range(0,3,1) :
        print("난생처음 파이썬은 재미있습니다. ^^")
    
    # >> for문과 같은 결과가 나오게 while문으로 바꿔보기
    
    i = 0
    while (i < 3):
        print(i, " : 난생처음 파이썬은 재미있습니다.^^")
        i = i + 1

     

    ▶ while 문의 무한반복

    : <Ctrl + C> 를 누르기 전까지는 계속 반복됨.

    while True :
        print("ㅎ하", end = "")
    # 입력한 두 숫자의 합계를 반복해서 계산하는 프로그램
    
    hap = 0
    num1, num2 = 0,0
    
    while True:
        num1 = int(input("숫자1 => "))
        num2 = int(input("숫자2 => "))
        
        hap = num1 + num2
        print(num1, "+", num2, "=", hap)

     

    ▶ break문

    : 반복문을 탈출하는 break문

    : 반복문 안에서 break문을 만나면 무조건 반복문을 빠져나옴.

    for i in range(1,1001,1) :
        print("반복문을", i, "회 실행합니다.")
        break

     

     

    hap = 0
    num1 , num2 = 0,0
    
    while True :
        num1 = int(input("숫자1 => "))
        if num1 == 0 :      # 0을 입력하면 
            break              # break가 걸려서 마지막 print()함수 값이 출력됨
        num2 = int(input("숫자2 => "))
        hap = num1 + num2
        print(f"{num1} + {num2} = {hap}")
    print("0을 입력해서 계산을 종료합니다.")

     

    ▶ continue문

    : 처음으로 돌아가는 continue문

    : break문은 반복문을 빠져나가지만  continue문은 남은 부분을 모두 건너뛰고 반복문의 처음으로 돌아감.

     

    [연습문제]

     

    * 숫자 1~100을 더하되 4의 배수는 더하지 않는 프로그램 만들기

    ( 4의 배수를 건너뛰고 합계 구하기)

    i, hap = 0,0
    
    for i in range(1,101,1) :
        if i % 4 == 0 :    # i값에서 4를 나눈 값의 나머지가 0이 되면
            continue          # 다시 for문(처음)으로 돌아가서 다른 i 가져옴
                                 # 4의 배수가 아닌 i값은 아래 계산식으로 넘어감 
        hap += i
    print("1~100의 합계(4의 배수 제외): ", hap)

     

     

    [연습문제]

     

    * 주사위 3개를 동시에 던져 모두 동일한 숫자가 나와야만 반복문을 탈출할 수 있는 게임을 만들어보자.

    몇 번을 던져야 3개의 주사위에서 동일한 숫자가 나올까?

    import random
    
    count = 0
    dice1, dice2, dice3 = 0,0,0
    
    while True :
        count += 1
        dice1 = random.randint(1,6)
        dice2 = random.randint(1,6)
        dice3 = random.randint(1,6)
        
        if (dice1 == dice2) and (dice2 == dice3) :
            break
    
    print("3개 주사위는 모두", dice1, "입니다.")
    print("같은 숫자가 나오기까지", count, "번 던졌습니다.")

     

     

    [연습문제]

     

    * 컴퓨터가 1~5까지 숫자 중 한 가지를 생각하면 사람이 그 숫자를 말하는 게임.

    (단, 10번 안에는 맞혀야 함)

    * 숫자를 맞히면 break문으로 반복문을 빠져나가고, 맞히지 못하면 continue문으로 다시 반복문의 처음 부분으로 돌아가기.

     

    import random
    
    i = 0
    com = 0
    me = 0
    
    for i in range(1,11,1) :
        com = random.randint(1,5)
        print(f"게임 {i}회 :", end = "")
        me = int(input("컴퓨터의 숫자는 뭘까요? => "))
        
        if com == me :
            print("맞혔네요! 축하합니다~ ")
            break
        else :
            print("아쉬워요.", com, "였는데~ 다시 해보세요!")
            continue
    print("게임을 마칩니다.")

    728x90

    댓글