본문 바로가기

Python/Practice

Q. 6/7단 제외 구구단 - 2

1. 출력을 안하게

a = 2

while a <= 9:
    print()
    print(f"{a}단을 출력해보자")

    b = 1
    while b <= 9:
        result = a * b
        if a != 6 and a != 7:        # a가 (6이 아니거나 + 7이 아닌경우)를 출력하겠다
        # if not (a == 6 or a == 7):      # a가 (6이거나 7이) '아닌'경우를 출력하겠다

            print(f"{a} X {b} = {result}")
        b = b + 1

    a = a + 1

    ## 사실은 출력만을 막은거지, 연산은 돌아간거지. 연산자체를 안하는 방법은 없을까?

 

2. 연산을 안하게

a = 2

while a <= 9:

    b = 1
    while b <= 9:
        if a == 6 or a == 7:
            break               # 안쪽 while문을 탈출해서 a = a + 1로 넘어가는거임

        result = a * b
        print(f"{a} X {b} = {result}")
        b = b + 1

    a = a + 1

    ## 처음부터 while문 자체를 만나지 않는건??

 

 

3. while안만나게

a = 2

while a <= 9:
    print()
    print(f"{a}단을 출력해보자")

    b = 1
    if not(a == 6 or a == 7):
        while b <= 9:
                result = a * b
                print(f"{a} X {b} = {result}")
                b = b + 1

    a = a + 1           



a = 2

while a <= 9:
    print()
    print(f"{a}단을 출력해보자")

    if a == 6 or a == 7:
         a = a + 1      # 이게 continue 밑에 있으면 '6단을 출력해보자'가 무한루프로 돌아감.
         		 왜? 6만나면 계속 continue걸리니까!!!!
         continue       # a가 6이면 a+1이 실행되어 7이되고 continue, 그 밑으로 넘어가지 않는다.
         		 7도 8이되어 continue. 8이면 밑으로 내려가겠지?
                    

    b = 1
    while b <= 9:
            result = a * b
            print(f"{a} X {b} = {result}")
            b = b + 1

    a = a + 1

 

 

# 연습01. continue이용

print("--------연습01---------")

x = 2

while x <= 9:
     
     y = 1
     while y <= 9:
        if y == 6 or y == 7:
             y = y + 1
             continue
        
        result = x * y
        print(f"{x} X {y} = {result}")
        y = y + 1
     
     x = x + 1

## y값이 변하는게 지금 먼저오면안돼
## 지금 내가쓴건 2단에서 x6, x7 / 3단에서 x6, x7을 안하겠다는 뜻임

 

 

# 연습02. continue이용 -2

print("--------연습02---------")

x = 2   # x단

while x <= 9:
    if x == 6 or x == 7:
         x = x + 1
         continue

    y = 1
    while y <= 9:
        result = x * y
        print(f"{x} X {y} = {result}")
        y = y + 1

    x = x + 1

 

 

# 연습03. break이용

print("--------연습03---------")

x = 2

while x<= 9:

    if x == 6 or x == 7:
         x = x + 1
         break
    
    y = 1
    while y <= 9:
        result = x * y
        print(f"{x} X {y} = {result}")
        y = y + 1
     
    x = x + 1
    
    ## 이렇게하면 6단을 만나면 break걸려서 밑에 모든게 안나옴.

 

 

# 연습04. break이용 -2

print("--------연습04---------")

x = 2

while x<= 9:

    y = 1
    while y <= 9:
        if x == 6 or x == 7:
             break
        
        result = x * y
        print(f"{x} X {y} = {result}")
        y = y + 1
     
    x = x + 1

    ## break는 바로앞에있는 while문을 빠져나가는것.
    ## 지금 while이 2개지? 가장 가까운걸 빠져나가서 더 큰 while을 다시 도는거야!!!