본문 바로가기
파이썬 코드업 기초 100제

파이썬 코드업 기초 11 - 조건/선택실행구조

by chanfficial 2022. 2. 3.

65. 세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.

Tip1 : 조건문 이용

Tip2 : 

  1. filter() 이용
  2. '*(asterisk)' 이용
  3. 익명함수 lambda 이용

1) 정답

# 1
a, b, c = map(int, input().split())
if not a%2: print(a)
if not b%2: print(b)
if not c%2: print(c)

#2
a, b, c = map(int, input().split())
print( *(filter(lambda num: num%2 == 0, [a, b, c])) )

#1

: a%2 == 0 일때 값이 false가 되기 때문에 not을 사용해서 값을 true로 바꿔준 다음 정수를 출력하도록 했다. 즉, 짝수일 때만 값을 출력하도록 했다.

 

#2 (필터함수를 이용한 구현)

ex) lambda 함수

# x를 인수로 받아 x+1을 리턴함  
lambda x : x+1

# 호출
(lambda x : x+1)(10)
# 10이 x로 들어가고, 10+1의 값이 리턴됨
# 결과값 = 11

- 입력된 a, b, c의 값을 리스트 형태로 파라미터로 넣어주면 a가 num으로 들어간 다음 2로 나눠지고 그것이 짝수이면 0이 나오고 not 0 = true가 되므로 그에 해당하는 a값은 true가 되는 순간 반환되고, 해당 조건이 거짓이면 반환되지 않는다. (이 과정을 a, b, c 세 번 반복함)

 

 

2) 내가 쓴 답

a, b, c = map(int, input().split())

if a % 2 == 0 :
	print(a)
if b % 2 == 0 :
	print(b)
if c % 2 == 0 :
	print(c)

- 조건식을 세 번 사용해서 2로 나눈 나머지가 0일 때만 출력하도록 했다. 근데 자꾸만 if를 쓰면 else도 당연히 써야되는거 아닌가?? 하는 생각을 하게됨....그르지말어.......

 

 

 

66. 세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.

1) 정답

# 1
a, b, c = map(int, input().split())
print( 'odd' if a%2 else 'even' )
print( b%2 and 'odd' or 'even' )
print( ['even', 'odd'][c%2] )


#2
a, b, c = map(int, input().split())
print( *map(lambda num: 'odd' if num%2 else 'even', [a, b, c]) )

#1

: if-else로 삼항 연산을 통하여 답을 구현할 수 있고, 비교 연산자로도 삼항 연산을 통하여 답을 구할 수 있으며 세 번째 경우처럼 리스트를 이용하여 답을 구할수도 있다.

 

2) 내가 쓴 답

a, b, c = map(int, input().split())

if a % 2 == 0:
	print("even")
else:
	print("odd")
    
if b % 2 == 0:
	print("even")
else:
	print("odd")
    
if c % 2 == 0:
	print("even")
else:
	print("odd")

- 정답처럼 저렇게 줄여서 쓰는 조건문?이 익숙하지가 않아서 이렇게 길게 쓰고있다...

 

 

 

67. 정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.

입력
-4
출력
minus
even

 

1) 정답

num = int(input())
print( num>0 and 'plus' or 'minus' )
print( num%2 and 'odd' or 'even' )

- 삼항 연산을 통해 답을 출력하도록 했다.

 

2) 내가 쓴 답

a = int(input())

if a > 0:
	print("plus")
else:
	print("minus")
    
if a % 2 == 0:
	print("even")
else:
	print("odd")

- 이쯤되니 그냥,, 길게 써도 맞기만 하면 되는거 아니야??하는 뻔뻔한 생각이 든다.

 

 

68. 점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.

**평가 기준**
점수 범위 : 평가
 90 ~  100 : A
 70 ~   89 : B
 40 ~   69 : C
  0 ~   39 : D
로 평가되어야 한다.

Tip : if-elif-else를 이용한다.

 

정답과 내가 쓴 답이 같음

a = int(input())

if a >= 90:
	print("A")
elif a >= 70:
	print("B")
elif a >= 40:
	print("C")
else a >= 0:
	print("D")

- 조건문을 사용하여 평가 기준만큼 나누어서 해당 성적을 출력하도록 했다.

 

 

 

69. 평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.

**평가 내용**
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?

 

정답과 내가 쓴 답이 같음

char = input()

if char == "A":
	print("best!!!")
elif char == "B":
	print("good!!")
elif char == "C":
	print("run!")
elif char == "D":
	print("slowly~")
else:
	print("what?")

 

 

 

70. 월이 입력될 때 계절 이름이 출력되도록 해보자.


[월 : 계절 이름]
12, 1, 2 : winter
3, 4, 5 : spring
6, 7, 8 : summer
9, 10, 11 : fall

 

1) 정답

# 1
month = int(input())
if month==12 or month==1 or month==2:
  print('winter')
elif month==3 or month==4 or month==5:
  print('spring')
elif month==6 or month==7 or month==8:
  print('summer')
else:
  print('fall')

# 2
if month in [12,1,2]:
  print('winter')
elif month in [3,4,5]:
  print('spring')
elif month in [6,7,8]:
  print('summer')
else:
  print('fall')

#1 처럼 답을 작성해도 되지만 파이썬에서는 #2의 방법으로 더 간단하게 문제를 해결할 수 있다.

- month가 [12, 1, 2]안에 있다면 winter를 출력하도록 했다.

 

2) 내가 쓴 답

month = int(input())

if month == 1 or month == 2 or month == 12:
	print("winter")
elif month == 3 or month == 4 or month == 5:
	print("spring")
elif month == 6 or month == 7 or month == 8:
	print("summer")
else:
	print("fall")

- if 조건문에 비교 연산자 or를 사용해서 해당하는 계절 이름이 출력되도록 했다.