Skip to content

Latest commit

 

History

History
259 lines (166 loc) · 5.7 KB

0425_IfWhile.md

File metadata and controls

259 lines (166 loc) · 5.7 KB

✅ [4/25] if 조건문, while 반복문

미션1. 지는 가위바위보

지는 가위바위보란 아래와 같은 룰을 따르는 게임을 말합니다.

  1. 게임 참가자는 진행자를 대상으로 가위바위보를 져야합니다.
  2. 진행자가 먼저 가위바위보를 외치며 내면 그 다음 템포에서 바로 지는 것을 내야합니다.
  3. 잘못내면 패배하게 됩니다.

진행자가 낸 것을 입력받아 지는 가위바위보로 옳은 결과를 출력하세요.

예를 들어, 진행자가 ‘가위’를 낼 경우, ‘보’를 출력해야 합니다.

user_input = input()

if user_input == "가위":
    print("보")
elif user_input == "바위":
    print("가위")
elif user_input == "보":
    print("바위")
else:
    print("잘못된 입력입니다.")

미션2. 점수 변환기

한 과목에서 학생들의 최종 점수가 나왔습니다. 교수님은 이 점수를 가지고 학생들에게 학점 A, B, C, D, F 중 하나를 부여합니다.

  • A: 80점 이상
  • B: 60점 이상 80점 미만
  • C: 40점 이상 60점 미만
  • D: 20점 이상 40점 미만
  • F: 20점 미만

위와 같은 조건으로 입력된 점수를 등급으로 변환하세요.

예를 들어, 70을 입력하면 B가 출력되어야 합니다.

score = int(input())

if score >= 80:
    print("A")
elif score >= 60:
    print("B")
elif score >= 40:
    print("C")
elif score >= 20:
    print("D")
else:
    print("F")

미션4. 시험 합격 문구 작성하기

어제 진행되었던 자격증 시험의 채점이 끝이 났습니다.

이 자격증 시험에서는 70점 이상의 경우 합격, 그 아래의 경우 불합격이 됩니다.

하지만 결과표에 점수만 나와있고 합격/불합격 여부가 나와있지 않습니다.

점수를 입력받으면 합격, 불합격 문구가 출력되는 프로그램을 작성해 봅시다.

score = int(input())

if score >= 70:
    print("축하드립니다! 합격입니다.")
else:
    print("안타깝습니다. 불합격입니다.")

미션5. 1부터 N까지 출력하기

어떠한 수가 입력되면 1부터 차례대로 N까지 출력되는 프로그램을 작성해 봅시다.

n = int(input())

for i in range(1, n+1):
    print(i, end=" ")

미션6. 과제제출 프로그램

교수님께서는 93개의 과제를 내주셨습니다.

과제는 이메일로 다음과 같은 파일 이름으로 하지 않으면 0점으로 하겠다고 엄포를 놓으셨습니다.

과제3.doc
과제4.doc
.
.
.
과제95.doc

그래서 파일이름을 출력하는 프로그램을 만들어 보았지만 잘 되지 않았습니다.

여러분이 코드를 수정하여 올바르게 출력되도록 해 봅시다!

# 아래의 코드를 수정하여 올바른 파일명이 출력되도록 해봅시다.

for i in range(1, 11):
    print('과제' + i + '.doc')
# 수정된 코드

for i in range(3, 96):
    print('과제' + str(i) + '.doc')

미션7. 수열 출력하기

입력된 숫자만큼 숫자 1, 2, 3이 반복되는 규칙적인 수열을 출력해봅시다.

n = int(input())

for i in range(n):
    print((i % 3) + 1, end=" ")

'==' 파이썬 논리연산자 중에, 왼쪽과 오른쪽이 같은 값인지 표기하는 것 ( '=' 과는 다름에 유의 )

while 반복문은 break, continue 와 조합해서 사용하기 좋음

For

while 반복문과 비교할 때, 정해진 횟수만큼 명령을 반복한다면 for 반복문을 활용하는게 좋음

다중으로 활용 가능 (nested for loop, nesting)

for i in range(2):
    for j in range(3):
        print(i, j)
        
'''
0 0
0 1
0 2
1 0
1 1
1 2
'''

Break

break 가 쓰인 가장 가까운 반복문만 빠져나옴에 유의!

if 조건문에 대한 break 는 없고, 반복문에 대해서만 break 작동된다는 점도 유의!

Continue

continue 이후에 오는 코드를 무시하고 다시 위로 올라가기 때문에, continue 아랫줄에 어떤 코드를 설계하는지가 중요

CS1 로봇 예시로 if 조건문, while 반복문 확인

비퍼 감지

*로봇 관련 예제에서 비퍼는 좌표 평면의 동그라미들

Robot 클래스 안에 있는 다양한 함수들 어제부터 학습하고 있음. 오늘은 pick_beeper()

not 은 몇 번이고 붙여서 쓸 수 있는 연산자

print(not 3<5)
# False

print(not not 3<5)
# True

휴보의 세계일주

hubo.drop_beeper()
hubo.move()  # while문 시작하기 전에, 이 코드로 휴보가 비퍼 위에서 벗어난 상태가 되도록 세팅해줘야만 주어진 문제를 해결할 수 있음
while not hubo.on_beeper():
    if hubo.front_is_clear():
        hubo.move()
    else:
        hubo.turn_left()

우회전이 필요한 경우 (이전 코드 개선하기)

hubo.drop_beeper()
hubo.move()
while not hubo.on_beeper():
    if hubo.right_is_clear():
        turn_right()
        hubo.move()
    elif hubo.front_is_clear():
        hubo.move()
    else:
        hubo.turn_left()

시작점 바로 앞에 벽이 있는 경우 (이전 코드 개선하기)

~ 이런 특수한 경우를 고려하면서 알고리즘을 개선하는 것을 "코너 케이스" 디버깅이라고 함

정확하고 품격 있는 프로그램을 작성하기 위한 한 가지 방법은, 컴퓨터가 아닌 사람이 읽을 것이라 생각하고 작성하는 것입니다.

failsafe

실습1번 문제에서 사용자가 정수가 아닌 수나 문자를 입력했을 때 어떻게 프로그램을 작동하게 만들 것인지 미리 생각하면서 코드를 작성