if ... else
break
continue
switch
if ... else
¶if (조건)
{
명령문
}
else
{
명령문
}
if ... else ...
¶#include <stdio.h>
int main(void) {
/*
버스를 탄다고 가정
학생/일반인으로 구분
일반인: 20세 이상
*/
int age = 15;
if (age >= 20)
printf("일반인입니다.\n");
else
printf("학생입니다.\n");
return 0;
}
"""
버스를 탄다고 가정
학생/일반인으로 구분
일반인: 20세 이상
"""
age = 15
if (age >= 20):
print("일반인입니다.")
else:
print("학생입니다.")
if ... else if ... else
¶#include <stdio.h>
int main(void) {
/*
초등학생(8-13)/중학생(14-16)/고등학생(17-19)/일반인으로 구분하기
if ... else if ... else 형식 활용
*/
int age = 25;
if (age >= 8 && age <= 13)
printf("초등학생입니다.\n");
else if (age >= 14 && age <= 16)
printf("중학생입니다.\n");
// else if 반복 사용 가능
else if (age >= 17 && age <= 19)
printf("고등학생입니다.\n");
// 마지막 남은 경우는 else로 처리
else
printf("일반인입니다.\n");
return 0;
}
else if
대신에 elif
사용.논리 연산자 | C 언어 | Python 언어 |
---|---|---|
논리곱($\land$) | && | and |
논리합($\lor$) | || | or |
논리부정($\neg$) | ! | not |
"""
초등학생(8-13)/중학생(14-16)/고등학생(17-19)/일반인으로 구분하기
if ... else if ... else 형식 활용
"""
age = 25
if (age >= 8 and age <= 13):
print("초등학생입니다.")
elif (age >= 14 and age <= 16):
print("중학생입니다.")
# elif 반복 사용 가능
elif (age >= 17 and age <= 19):
print("고등학생입니다.")
# 마지막 남은 경우는 else로 처리
else:
print("일반인입니다.")
break/continue
¶break
¶break
가 실행되는 순간에 가장 가까운 반복문의 실행 종료break
¶#include <stdio.h>
int main(void) {
/*
break/continue
1번부터 30번까지 있는 반에서 1번에서 5번까지 조별 발표하기
*/
for (int i = 1; i <=30; i++)
{
if (i >= 6)
{
printf("나머지 학생은 집에 가세요.\n");
// 이제 for 반복문을 더이상 실행하지 않도록 하기
break;
}
printf("%d번 학생은 조별발표 준비 하세요.\n", i);
}
return 0;
}
"""
break/continue
1번부터 30번까지 있는 반에서 1번에서 5번까지만 조별 발표하기
"""
for i in range(1, 31):
if (i >= 6):
print("나머지 학생은 집에 가세요.")
# 이제 for 반복문을 더이상 실행하지 않도록 하기위해 break 사용
break
print(f"{i}번 학생은 조별발표 준비 하세요.")
continue
¶continue
가 실행되는 순간에 가장 가까운 반복문의 다음 경우 실행continue
¶#include <stdio.h>
int main(void) {
/*
break/continue
1번부터 30번까지 있는 반에서 7번 학생은 결석
따라서 7번을 제외하고 6번부터 10번까지 조별발표 하세요.
*/
for (int i = 1; i <=30; i++)
{
if (i >= 6 && i <= 10)
{
if (i == 7)
{
printf("%d번 학생은 결석입니다.\n", i);
// 이제 7번 학생은 건너뛰고 for 반복문을 8번 학생에 대해 실행하도록 하기
continue ;
}
printf("%d번 학생은 조별발표 준비 하세요.\n", i);
}
}
return 0;
}
"""
break/continue
1번부터 30번까지 있는 반에서 7번 학생은 결석
따라서 7번을 제외하고 6번부터 10번까지 조별발표 하세요.
"""
for i in range(1, 31):
if (i >= 6 and i <= 10):
if (i == 7):
print("%d번 학생은 결석입니다." % i)
# 이제 7번 학생은 건너뛰고 for 반복문을 8번 학생에 대해 실행하도록 하기
continue
print("%d번 학생은 조별발표 준비 하세요." % i)
i >= 6 and i <= 10
를 6 <= i <= 10
표현 가능."""
break/continue
1번부터 30번까지 있는 반에서 7번 학생은 결석
따라서 7번을 제외하고 6번부터 10번까지 조별발표 하세요.
"""
for i in range(1, 31):
if (6 <= i <= 10):
if (i == 7):
print("%d번 학생은 결석입니다." % i)
# 이제 7번 학생은 건너뛰고 for 반복문을 8번 학생에 대해 실행하도록 하기
continue
print("%d번 학생은 조별발표 준비 하세요." % i)
#include <stdio.h>
int main()
{
for (int i = 2; i<= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
if (j == 3)
{
break;
}
printf("%d 곱하기 %d는 %d\n", i, j, i*j);
}
printf("\n");
}
return 0;
}
for i in range(2,10):
for j in range(1,10):
if j == 3:
break
print(f"{i} 곱하기 {j} 는 {i*j}")
print('')
#include <stdio.h>
int main()
{
for (int i = 2; i<= 9; i++)
{
for (int j = 1; j <= 9; j++)
{
if (j == 3)
{
continue;
}
printf("%d 곱하기 %d는 %d\n", i, j, i*j);
}
printf("\n");
}
return 0;
}
for i in range(2,10):
for j in range(1,10):
if j == 3:
continue
print(f"{i} 곱하기 {j} 는 {i*j}")
print('')
"값이 서로 다르네요"
출력#include <stdio.h>
int main(void) {
/*
논리 연산자: &&(and) 와 ||(or)
*/
int a = 10;
int b = 11;
int c = 12;
int d = 13;
if (a==b && c ==d)
{
printf("a와 b는 같고, c와 d도 같습니다.\n");
}
else
{
printf("값이 서로 다르네요.\n");
}
return 0;
}
"a와 b는 같고, c와 d도 같습니다."
출력#include <stdio.h>
int main(void) {
/*
논리 연산자: &&(and) 와 ||(or)
*/
int a = 10;
int b = 10;
int c = 12;
int d = 12;
if (a==b && c ==d)
{
printf("a와 b는 같고, c와 d도 같습니다.\n");
}
else
{
printf("값이 서로 다르네요.\n");
}
return 0;
}
"a와 b, 혹은 c와 d의 값이 같습니다."
출력#include <stdio.h>
int main(void) {
/*
논리 연산자: &&(and) 와 ||(or)
*/
int a = 10;
int b = 10;
int c = 12;
int d = 13;
if (a==b || c ==d)
{
printf("a와 b, 혹은 c와 d의 값이 같습니다.\n");
}
else
{
printf("값이 서로 다르네요.\n");
}
return 0;
}
"a와 b, 혹은 c와 d의 값이 같습니다."
출력#include <stdio.h>
int main(void) {
/*
논리 연산자: &&(and) 와 ||(or)
*/
int a = 11;
int b = 10;
int c = 12;
int d = 12;
if (a==b || c ==d)
{
printf("a와 b, 혹은 c와 d의 값이 같습니다.\n");
}
else
{
printf("값이 서로 다르네요.\n");
}
return 0;
}
and
: C 언어의 &&
(논리곱) 연산자or
: C 언어의 ||
(논리합) 연산자not
: C 언어의 !
(부정) 연산자# 논리 연산자: and, or, 그리고 not
a = 11
b = 10
c = 12
d = 12
print(a==b and c==d, a==b or c==d, not(a==b and c==d))
if ... else if ... else
를 이용한 가위-바위-보 게임#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
/*
가위 0, 바위 1, 보 2
*/
srand(time(NULL));
int i = rand() % 3; // 0부터 2 사이 숫자 반환
if (i == 0)
{
printf("가위!\n");
}
else if (i == 1)
{
printf("바위!\n");
}
else if (i == 2)
{
printf("보!\n");
}
else
{
printf("몰라요!\n");
}
return 0;
}
switch ... case ...
를 이용한 가위-바위-보 게임break
사용에 주의할 것!#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) {
/*
switch 활용: 가위 0, 바위 1, 보 2
*/
srand(time(NULL));
int i = rand() % 3; // 0부터 2 사이 숫자 반환
// break 사용에 주의할 것!
switch (i)
{
case 0: printf("가위!\n"); break;
case 1: printf("바위!\n"); break;
case 2: printf("보!\n"); break;
default: printf("몰라요!\n");
}
return 0;
}
#include <stdio.h>
int main(void) {
/*
초등학생(8-13)/중학생(14-16)/고등학생(17-19)/일반인으로 구분하기
switch ... case ... 활용!
*/
int age = 18;
switch (age)
{
case 8:
case 9:
case 10:
case 11:
case 12:
case 13: printf("초등학생입니다.\n"); break;
case 14:
case 15:
case 16: printf("중학생입니다.\n"); break;
case 17:
case 18:
case 19: printf("고등학생입니다.\n"); break;
default: printf("학생이 아닌가봐요.\n"); break;
}
return 0;
}
switch ... case ...
지원 없음.dict
)을 이용하여 쉽게 구현 가능.switch/case
를 완전히 모방할 수 있음.import random
import time
import sys
secret = 0
count=0
# 현재 시간에 맞추어 무작위로 정수 생성 가능
# time 함수: 1970.01.01 이후 흐른 시간(ns 단위)
current_time = int(time.time())
# 현재 시간 기준으로 무작위수 생성 지정
random.seed(current_time)
# 0과 100 사이의 무작위 정수 지정
secret = random.randint(0, sys.maxsize)%3
cases = {
0: "가위",
1: "바위",
2: "보"
}
print(cases[secret])
defaultdict
활용¶defaultdict
는 사전 자료형을 확장한 자료형이며, 사전과 비슷하게 사용됨.switch/case
와 함께 사용되는 default
기능을 간단하게 구현할 수 있음.default
에 해당하는 "잘못 냈어요!"
를 지정하는 방법을 보여줌.import random
import time
import sys
from collections import defaultdict
secret = 0
count=0
# 현재 시간에 맞추어 무작위로 정수 생성 가능
# time 함수: 1970.01.01 이후 흐른 시간(ns 단위)
current_time = int(time.time())
# 현재 시간 기준으로 무작위수 생성 지정
random.seed(current_time)
# 0과 100 사이의 무작위 정수 지정
# 3도 선택될 수 있음.
secret = random.randint(0, sys.maxsize)%4
cases = {
0: "가위",
1: "바위",
2: "보"
}
# cases에 사용되지 않은 값, 예를 들어, 3을 키로 사용하면 예외처리되어 "잘못 냈어요!"가 반환됨.
default_cases = defaultdict(lambda: "잘못 냈어요!", cases)
print(default_cases[secret])
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Up and Down
int main()
{
srand(time(NULL)); // 현재시간 기준으로 무작위성 지정
int num = rand()% 100 + 1; // 1 - 100 사이의 숫자
int answer = 0; // 정답
int chance = 5; // 남은 기회
// 무한 반복문 실행
// 1: 참, 0: 거짓
while(1)
{
printf("남은 기회 %d 번\n", chance--);
printf("숫자를 맞혀보세요 (1-100): ");
scanf("%d", &answer);
if(answer > num){
printf("DOWN!\n\n");
}
else if(answer < num){
printf("UP!\n\n");
}
else if(answer == num){
printf("정답입니다!\n\n");
break;
}
else
{
printf("알 수 없는 오류가 발생했어요.\n\n");
}
if(chance == 0)
{
printf("모든 기회를 다 사용하셨네요. 아쉽게 실패했습니다.\n");
break;
}
}
return 0;
}
##### UP and DOWN
import random
import time
import sys
# 현재 시간에 맞추어 무작위로 정수 생성 가능
# time 함수: 1970.01.01 이후 흐른 시간(ns 단위)
current_time = int(time.time())
# 현재 시간 기준으로 무작위수 생성 지정
random.seed(current_time)
# 0과 100 사이의 무작위 정수 지정
# sys.maxsize: 사용 가능한 양의 정수 최댓값. 시스템마다 다를 수 있음.
num = random.randint(0, sys.maxsize)%100
chance=5
# 무한 반복문 실행
while(1):
print("남은 기회:", chance)
chance -= 1
answer = int(input("숫자를 맞혀보세요(0-100): "))
if answer > num:
print("DOWN!")
elif answer < num:
print("UP!")
elif answer == num:
print("정답입니다!")
break
else:
print("알 수 없는 오류가 발생했어요.")
if chance == 0:
print("모든 기회를 다 사용하셨네요. 아쉽게 실패했습니다.")
break