본문 바로가기

Python

[Python] 07

제어문(3)

기타 제어문

- break, continue : C, Java도 있으며, 같은 역할을 한다.

1. break

- 반복문(while, for)를 강제로 빠져나가기 위한 문장

(ex) 1부터 9까지 출력하고 while 무한루프를 탈출

2. continue

- 반복문(while, for) 수행 중에 무조건 맨 위로 올라가는 문장

리스트(list)

- 유사한 속성의 그룹을 만드는 가장 일반적인 방법

- cf) 튜플(tuple) - (), 세트(set) - {}, 딕셔너리(dict) - {A:B}

- 3차원 리스트는 사용 자제 : 왜? → 한 번 써보면 안쓰게 됨

(ex)

1. student = ['A학생', 'B학생', 'C학생']에서

(1) A학생을 꺼내오려면?

정답 : student[0]

(2) B학생, C학생을 꺼내오려면?

정답 : student[1:3]

2. class_student = [['A', 'B', 'C'], ['D', 'E', 'F']] → 2차원 리스트

(1) D학생을 꺼내오려면?

정답 : class_student[1][0]


 

실습(break)

1. n = 1 일 때 1씩 증가하여 출력(단, n이 10이면 종료)

n = 1

while True:
    if n == 10:
        break
    print(n)
    n += 1

 

 
결과

 

2. 이름, 최대 숫자를 입력받아 임의의수를 만들어 입력한 값과 같은지 맞추는 게임

(1) '이름을 입력하세요 :'를 출력하고 입력을 받는다.

name = input('이름을 입력하세요 : ')
 

 

(2) 숫자 입력을 받아 변수에 저장한다.

num = input('최대 숫자를 입력하세요 : ')
 

(3) 숫자인지 파악하고 숫자가 아니면 계속 입력을 받는다.(str.isdecimal() 이용)

while True:
    if num.isdigit() == True:
        break
    num = input('최대 숫자를 입력하세요 : ')
 

 

(4) 임의의 수를 만든다.(임의의 수 : 1부터 입력한 최대 숫자 사이의 값)

import random

rand_num = random.randint(1, int(num))
print(rand_num)
 

 

(5) '정답은 몇일까요?'를 출력하고 입력한 수와 같은지 맞추는 반복문을 실행한다.

count = 1
iscorrect = False

while True:

(단, 임의의 수와 입력한 수가 같거나 5번까지 맞추지 못하면 종료한다.)

- 정답을 입력받고 비교하는 로직

    ans = input('정답은 몇일까요? ')
    if ans.isdigit():
        if rand_num == int(ans):  # 정답
            print('정답입니다.')
            iscorrect = True
            break
        else:
            print('오답입니다.')
    if count == 5:
        break
    count = count + 1
 

- 정답을 맞춘 순서에 따른 결과값

if iscorrect:
    if count == 1:
        print('{}님 대단하십니다.'.format(name))
    elif count <= 3:
        print('{}님 우수한 성적이십니다.'.format(name))
    else:
        print('{}님 좀 심하십니다.'.format(name))
else:
    print('{}님, 정답은 {} 입니다.'.format(name, rand_num))
 

 

(6) 결과

정답을 한 번에 맞춘 경우

 

정답을 3번 이내에 맞춘 경우

 

정답을 5번 이내에 맞춘 경우

 

정답을 5번까지 맞추지 못한 경우

 

※ 전체코드

# 1
name = input('이름을 입력하세요 : ')

# 2. 숫자 입력을 받아 변수에 저장한다.
num = input('최대 숫자를 입력하세요 : ')

# 3. 숫자인지 파악하고 숫자가 아니면 계속 입력을 받는다.(str.isdecimal() 이용)
while True:
    if num.isdigit() == True:
        break
    num = input('최대 숫자를 입력하세요 : ')

# 4. 임의의 수를 만든다.
import random
rand_num = random.randint(1, int(num))
print(rand_num)

# 5. '정답은 몇일까요?'로 다섯 번 맞추는 반복문을 실행한다.
count = 1
iscorrect = False

while True:
    # 정답을 입력받고 비교하는 로직
    ans = input('정답은 몇일까요? ')
    if ans.isdigit():
        if rand_num == int(ans):  # 정답
            print('정답입니다.')
            iscorrect = True
            break
        else:
            print('오답입니다.')
    if count == 5:
        break
    count = count + 1

# 6. '정답은 몇일까요?'를 출력하고 입력한 수와 같은지 맞추는 반복문을 실행한다.
if iscorrect:
    if count == 1:
        print('{}님 대단하십니다.'.format(name))
    elif count <= 3:
        print('{}님 우수한 성적이십니다.'.format(name))
    else:
        print('{}님 좀 심하십니다.'.format(name))
else:
    print('{}님, 정답은 {} 입니다.'.format(name, rand_num))

 

 

 

실습(continue)

1. 1부터 9중에 3의 배수만 빼고 출력

n = 1

while True:
    if n == 10:
        break
    elif n % 3 == 0:
        n += 1
        continue
    print(n)
    n += 1

 

 
결과

 

 

실습(list)

1. 1차원 리스트, 2차원 리스트, 3차원 리스트

list_simple = [1, 2, 3]
list_bokjap = [[1, 2, 3], [4, 5, 6]]
list_thebokjap = [[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]

print(list_simple)
print(list_simple[0])  # 첫 번째 것
print(list_bokjap[1])  # 두 번째 것
print(list_bokjap[1][1])  # 두 번째 것 중 두 번째
print(list_thebokjap)
print(list_thebokjap[0][1][2])  # 첫 번째 것 중 두 번째 것의 세 번째

print(list_simple[1:3])  # [1:3] : 두 번째[1]부터 세 번째[2]까지 출력([시작 순서:제외 순서])
print(list_simple[0:3])

 

 
결과

'Python' 카테고리의 다른 글

[Python] 09  (0) 2021.11.24
[Python] 08  (0) 2021.11.23
[Python] 06  (0) 2021.11.20
[Python] 05  (0) 2021.11.18
[Python] 04  (0) 2021.11.17