스터디/파이썬 스터디 강의자료

[4팀/김민혜] 3차시 파이썬 스터디 - 조건문

알 수 없는 사용자 2023. 3. 21. 22:04

3차시_조건문_해답.pdf
0.16MB
3차시_조건문_강의안.pdf
0.37MB
3차시_조건문_과제.pdf
0.24MB

1. 조건문 conditional statement


예) 학점을 부여하는 프로그램 (F: 60점 미만, A: 90점 이상)

점수: 38, 65, 89, 16, 95, 71, 63, 48, 49, 66, 37

  1. 점수에 따른 학점의 기준 설정
  2. 기준을 바탕으로 첫 번째 점수 판단
  3. 다음 점수로 이동하며 2번 절차를 반복
  4. 더 이상 판단할 점수가 없을 때 프로그램 종료

📌 고려할 사항

  • 어떤 기준으로 정해야 하는가? ← 조건의 설정
  • 언제까지 해야 하는가? ← 반복의 설정

 

개념

DEF) 조건에 따라 특정 동작을 하도록 하는 프로그래밍 명령어

  • 반드시 조건의 참True거짓False으로 구분되어야 함
  • 조건문 사용을 위해 다음과 같은 명령 키워드를 사용한다.: if, else, elif
  • 실생활에서 필요한 상황
    • 앞 지하철과의 간격이 10m 이하면, 속도를 10km 이하로 낮춰라.
    • 사용자가 20세 이하면, VOD를 재생하지 마라.
    • 스마트폰 잠금 해제 패턴이 5회 틀리면, 20초간 대기 상태로 설정하라.

 

2. 명령 키워드


if—else문

if <조건>:           #if 입력 및 조건 삽입 후 ':' 입력
	 <수행명령 1-1>    #들여쓰기 후 수행 명령 입력
	 <수행명령 1-2>    #같은 조건에서 계속 수행할 명령인 경우, 같은 위치에 들여쓰기 유지 필요
else:               #조건이 불일치할 경우 수행할 명령
	 <수행명령 2-1>    #조건 불일치 시 수행할 명령 입력
	 <수행명령 2-2 

1. if 뒤에 참/거짓을 판단할 수 있는 조건문 필요. 조건문 끝에는 반드시 콜론(:)을 붙여야 함

2. 들여쓰기indentation를 사용해 해당 조건이 참일 경우 수행할 명령 작성. 들여쓰기는 space 키나 tab키를 사용.

3. if의 조건이 거짓일 경우 else문 수행. (생략해도 상관X)

  • 예제1 [직접 실행해보기]
print("Tell me your age?")
myage=int(input())
if myage<30:
	 print("Welcome to the club.")
else:
	 print("Oh! No. You are not accepted.")

*사용자에게 숫자를 입력받을 때는 input() 함수로 입력받은 값을 정수형으로 변환해야 한다.

  • 조건문을 작성하고 해당 조건을 판단할 때 필요한 비교 연산자

 

if—elif—else문 [중첩 if문]

  • 여러 개의 조건을 하나의 if문에서 검토할 수 있도록 함
  • elif: else if
score=int(input("Enter your score: "))

if score >= 90: grade='A'
elif score >= 80: grade='B'  #if가 아닌 elif문을 사용하는 것이 중요
elif score >= 70: grade='C'
elif score >= 60: grade='D'
else: grade='F'              #모든 조건에 만족하지 못할 경우 F 할당

print(grade)

* 첫 번째 if문부터 마지막 else문까지가 하나의 if문 그룹. → 즉, 하나의 조건만 맞는다면 다른 조건들과 비교X

  • if문, elif문, else문 뒤에 수행할 명령문이 한 줄이면 들여쓰기 하지 않음. (이는 들여쓰기로 명령어를 구분하는 모든 문법에 적용되는 사항)

 

3. 조건의 판단


비교 연산자 (=조건 연산자)

DEF) 어떤 것이 큰지 작은지, 그리고 같은지를 비교하는 것

  • 결과는 참 혹은 거짓
비교연산자 비교 상태 설명
x<y ~보다 작음 x가 y보다 작은지 검사
x>y ~보다 큼 x가 y보다 큰지 검사
x==y 같음 x와 y의 값이 같은지 검사
(할당 연산자인 =와 헷갈리지 않기)
x is y 같음 (메모리 주소) x와 y의 메모리 주소가 같은지 검사
x!=y 같지 않음 x와 y의 값이 같지 않은지 검사
x is not y 같지 않음 (메모리 주소) x와 y의 메모리 주소가 같지 않은지 검사
x>=y 크거나 같음 x가 y보다 크거나 같은지 검사
x<=y 작거나 같음 x가 y보다 작거나 같은지 검사
     
  • ==와 is 연산자의 차이
    • 처음 인터프리터 시작시 -5~256까지의 메모리(정적 메모리) 주소에 값을 할당하는 파이썬
    • 해당 값을 다른 변수가 사용할 때 메모리 주소를 반환
    • 만일 변수 a, b 모두 100이라는 값을 가지고 있을 때 ==과 is 문법 모두 True
      • 그러나, 300일 때는 값은 같으나 메모리 주소는 다르다고 출력. (→ is 문법 False)
      • 이해가 가지 않는다면 일단 ==만 사용
  • True와 False의 치환
    • 컴퓨터의 언어: 이진수 (0, 1)
    • True: 1, False: 0
    >>> (3 > 5) < 10
    True
    
    1) (3>5)의 결과 False 0으로 치환 → 2) 0<10의 결과 True.

 

논리 연산자 (and, or, not)

연산자 설명 예시

연산자 설명 예시
and 두 값이 모두 참일 경우 True, 그렇지 않을 경우 False (7>5) and (10>5) ⇒ True
(7>5) and (10<5) ⇒ False
or 두 값 중 하나만 참일 경우 True, 두 값 모두 거짓일 경우 False (7<5) or (10>5) ⇒ True
(7<5) or (10<5) ⇒ False
not 값을 역으로 반환하여 판단 not (7<5)는 True
not (7>5)는 False

 

4. 실습: 숫자찾기 게임


프로그램 규칙

  • 먼저 컴퓨터가 1~100 중 임의의 숫자 생성
  • 다음으로 사용자가 추측하는 숫자 입력 시 컴퓨터가 생성한 숫자보다 큰지, 작은지를 계속 비교
  • 정답을 맞힐 때까지 반복하다가 맞혔을 때 ‘정답입니다. 입력한 숫자는 n입니다.’를 출력 </aside>
import random
guess_number=random.randint(1,100)

print("숫자를 맞혀 보세요. (1~100)")
users_input=int(input())

while (users_input is not guess_number):
		if users_input > guess_number:
				print("숫자가 너무 큽니다.")
		else:
				print("숫자가 너무 작습니다.")
		users_input=int(input())
else:
		print("정답입니다.","입력한 숫자는",users_input,"입니다.")