p15 -
print('세 정수의 최댓값을 구합니다.')
a = int(input('정수 a의 값을 입력하세요:'))
b = int(input('정수 b의 값을 입력하세요:'))
c = int(input('정수 c의 값을 입력하세요:'))
maximum = a
if b > maximum : maximum = b
if c > maximum : maximum = c
print (f'최댓값은 {maximum}입니다.')
한 문장씩 처리 -> 순차구조
if와 콜론(:) 사이에 있는 식 = 조건식
조건식으로 평가한 결과에 따라 실행 흐름이 변경 = > 선택 구조
print('이름을 입력하세요 : ', end ='')
name = input()
print(f'안녕하세요? {name} 님')
input 함수로 축약가능
name = input('이름을 입력하세요 : ')
print(f'안녕하세요? {name} 님')
- 형변환 : input() 은 문자열str 반환 --> 10진수 정수형 변환을 위해 int() 사용
- 2진수,8진수,10진수,16진수를 정수로 변환시 -->> int(문자열, 진수)
* float()함수는 float('문자열') 받고 실행결과 실수형 반환
프롬프트 창에 입력
int('17') #10진수문자열 10진수 정수형
int('0b110', 2) #2진수 문자열 10진수 정수형
int('0o75',8) #8진수 문자열 10진수 정수형
int('0x3f',16) #16진수 문자열 10진수 정수형 변환
float('3.14') #문자열을 실수형 변환
복합문의 구조 (if, while문)
if, while로 시작해서 콜론(:)으로 끝 -> 헤더
헤더의 마지막 콜론(:)은 '바로 뒤에 스위트가 이어집니다'
if식 : 스위트 (반드시 1개 필요)
elif식 : 스위트 (없거나, 있으면 n개 가능)
else식 : 스위트 (없거나, 있으면 1개 가능)
최댓값 구하기 실습, 근데 print로 값 넣어서 도출하기
def max3(a,b,c) :
"""a.b.c의 최댓값을 구하여 반환"""
maximum = a
if b > maximum : maximum = b
if c > maximum : maximum = c
return maximum #최댓값 반환
print(f'max3(3,2,1) = {max3(3,2,1)}')
print(f'max3(3,2,2) = {max3(3,2,2)}')
print(f'max3(3,1,2) = {max3(3,1,2)}')
print(f'max3(3,2,3) = {max3(3,2,3)}')
print(f'max3(2,1,3) = {max3(2,1,3)}')
""" 은 파이썬의 docstring (여러줄 입력시에도 가능)
최댓값을 구하는 max3()함수를 이용하여 작성한 프로그렘
매개변수 a,b,c에 숫자를 입력받아 최댓값 반환
- 함수의 반환값, 함수 호출식 평가
함수 내부에서 처리한 값 반환 시 return 문
max3() 함수는 return 문에서 maximum 반환
실제 함수가 반환하는 값 얻으려면 함수 호출이 필요 = '함수 호출식을 평가해야 함수가 반환한 값을 얻을 수 있음'
ex. max3(3,2,1)처럼 함수를 호출하면, 세 값을 평가하여 3이라는 반환값 얻을 수 있음
알고리즘이란
어떠한 문제를 해결하기 위해 정해놓은 일련의 절차
올바른 알고리즘이란 ?
어떠한 경우에도 실행 결과가 똑같이 나오는 것
--복합문 작성시 규칙--
복합문의 스위트는 반드시 행마다 같은 수준으로 들여쓰기
들여쓰기는 공백 최소 1개이상, 권장은 공백 4개 (PEP 8)
if a < b :
min2 = a #공백 4개 들여쓰기
max2 = b #이 문장도 공백 4개로 들여쓰기 해야 if a<b : 에 종속되어 실행
만약 스위트가 단순문이면 헤더와 같은 행도 가능
단순문이 2개 이상일 시 각각의 단순문을 세미콜론(;)으로 구분하여 헤더와 같은 행 가능
세미콜론 마지막 단순문에 놓기 가능
if a < b : min2 = a #단순문 1개
if a < b : min2 = a ; max2 = b #단순문 2개
if a < b : min2 = a ; max2 = b; #단순문 2개 (세미콜론 추가한 단순문)
but 스위트가 복합문이면 헤더와 같은 스위트를 같은 행에 포함시킬수 x
세 정수의 중앙값
def med3(a,b,c) :
"""a,b,c 중앙값 구하여 반환"""
if a >= b :
if b >= c:
return b
elif a <= c :
return a
else:
return c
elif a> c:
return a
elif b > c:
return c
else :
return b
print('세 정수의 중앙값 구하기')
a = int(input('정수 a 값을 입력하세요 : '))
b = int(input('정수 b 값을 입력하세요 : '))
c = int(input('정수 c 값을 입력하세요 : '))
print(f'중앙값은 {med3(a,b,c)}입니다.')
2번째 방법
def med3(a,b,c) :
"""a,b,c의 중앙값을 구하여 반환(다른 방법)"""
if(b >=a and c <=a) or (b <= a and c >= a ) :
return a
elif (a > b and c < b) or (a < b and c > b) :
return b
return c
(생략)
p25
코드는 짧지만 효율은 위의 코드가 더 좋은 이유?
if 문의 조건식이 성립하지 않으면 (거짓이면)
이어지는 elif문은 이 판단을 수행할 필요가 없으므로 효율적이지 x
(a와 b의 비교를 이미 마친 상태에서 다시 비교하는 것이 not 효율적)
'[Dev] 🎯Self Study' 카테고리의 다른 글
[백준] A+B (1000번) ~ 사칙연산 (0) | 2023.05.25 |
---|---|
[알고리즘 파이썬] 순열과 조합 (0) | 2023.05.23 |
[알고리즘 파이썬] SW expert academy (0) | 2023.05.19 |
[알고리즘 파이썬] (0) | 2023.05.16 |
[알고리즘 파이썬] 스트링 알고리즘 (0) | 2023.05.12 |