[제로베이스 데이터 취업스쿨] 23.06.06 스터디 노트

김준호·2023년 6월 6일
0
post-thumbnail

연산자(operator)

divmod()

나눗셈 연산에서 나머지와 몫을 한번에 구할 수 있는 함수

num1 = 10
num2 = 3
result = divmod(num1, num2)
print('result : {}'.format(result))  #(3,1) 튜플 이라는 자료구조 형태로 나옴
print('몫 : {}'.format(result[0]))    #인덱스 0 은 첫번째 숫자
print('나머지 : {}'.format(result[1])) #인덱스 1 은 두번째 숫자
resulr : (3, 1)
몫 : 3
나머지 : 1

n의 m 제곱근 공식

n ** (1/m)

4의 2 제곱근

result = 4 ** (1/2)
print('result : {}'.format(result))
result : 2.0

math 모듈의 sqrt()와 pow()

모듈을 사용할 때

import 모듈   #모듈 가져오기
모듈.함수()    #모듈 사용

sqrt() 예시

import math
print(math.sqrt(2))  #2의 제곱근
print(math.sqrt(3))  #3의 제곱근
print(math.sqrt(4))  #4의 제곱근

#sqrt()는 2제곱근만 구할 수 있다.
1.4142135623730951
1.7320508075688772
2.0

pow() 예시

import math
print('result : %d'%(math.pow(2,3))) #2의 3제곱
print('result : %d'%(math.pow(4,2))) #4의 2제곱
print('result : %d'%(math.pow(3,8))) #3의 8제곱
result : 8
result : 16
result : 6561

복합연산자

num = 10
num += 3  		#num = num +3

print('num : {}'.format(num))
num : 13

비교연산자(숫자)

연산 결과는 bool(True, False)이다

num1 = 10; num2 = 5
result = num1 > num2
print('num1 > num2 : {}'.format(result))

result = num1 >= num2
print('num1 >= num2 : {}'.format(result))

result = num1 < num2
print('num1 < num2 : {}'.format(result))
num1 > num2 : True
num1 >= num2 : True
num1 < num2 : False

비교연산자(문자)

아스키코드 : ANSI에서 표준화한 정보교환용 7비트 부호체계
쉽게 말해서, 컴퓨터에서 사용하는 문자를 숫자로 정해 놓은 것

아스키 코드 표

문자 -> 숫자 변환 [ ord() ]

print('\'A\' -> {} '.format(ord('A')))
print('\'a\' -> {} '.format(ord('a')))
'A' -> 65 
'a' -> 97 

숫자 -> 문자 변환 [ chr() ]

print('65 -> \'{}\''.format(chr(65)))
print('97 -> \'{}\''.format(chr(97)))
65 -> 'A'
97 -> 'a'

문자열 비교

문자가 같은지 아닌지만 비교가능

str1 = 'Hello'
str2 = 'hello'
print('{} == {} : {}'.format(str1,str2,(str1==str2)))
print('{} != {} : {}'.format(str1,str2,(str1!=str2)))
Hello == hello : False
Hello != hello : True

논리연산자

A and B

A와 B 모두 True인 경우만 결과값 True

print('{} and {} : {}'.format(True,True,(True and True)))
print('{} and {} : {}'.format(True,False,(True and False)))
print('{} and {} : {}'.format(False,True,(False and True)))
print('{} and {} : {}'.format(False,False,(False and False)))
True and True : True
True and False : False
False and True : False
False and False : False

A or B

A와 B중 하나만 True이면 결과값 Ture

print('{} or {} : {}'.format(True,True,(True or True)))
print('{} or {} : {}'.format(True,False,(True or False)))
print('{} or {} : {}'.format(False,True,(False or True)))
print('{} or {} : {}'.format(False,False,(False or False)))
True or True : True
True or False : True
False or True : True
False or False : False

not A

A의 상태를 부정하는 결과

print('not {} : {}'.format(True,(not True)))
print('not {} : {}'.format(False,(not False)))
not True : False
not False : True

연산자(operator) 모듈

산술연산자 관련 함수

import operator

num1 = 8
num2 = 3

print('{} + {} = {}'.format(num1, num2, operator.add(num1,num2)))
print('{} - {} = {}'.format(num1, num2, operator.sub(num1, num2)))
print('{} * {} = {}'.format(num1, num2, operator.mul(num1, num2)))
print('{} / {} = {}'.format(num1, num2, operator.truediv(num1, num2)))
print('{} % {} = {}'.format(num1, num2, operator.mod(num1, num2)))
print('{} // {} = {}'.format(num1, num2, operator.floordiv(num1, num2)))
print('{} ** {} = {}'.format(num1, num2, operator.pow(num1, num2)))
8 + 3 = 11
8 - 3 = 5
8 * 3 = 24
8 / 3 = 2.6666666666666665
8 % 3 = 2
8 // 3 = 2
8 ** 3 = 512

비교연산자 관련 함수

import operator

num1 = 8
num2 = 3

print('{} == {} : {}'.format(num1, num2, operator.eq(num1,num2)))
print('{} != {} : {}'.format(num1, num2, operator.ne(num1, num2)))
print('{} > {} : {}'.format(num1, num2, operator.gt(num1, num2)))
print('{} >= {} : {}'.format(num1, num2, operator.ge(num1, num2)))
print('{} < {} : {}'.format(num1, num2, operator.lt(num1, num2)))
print('{} <= {} : {}'.format(num1, num2, operator.le(num1, num2)))
8 == 3 : False
8 != 3 : True
8 > 3 : True
8 >= 3 : True
8 < 3 : False
8 <= 3 : False

논리연산자 관련 함수

import operator

flag1 = True
flag2 = False

print('{} and {} : {}'.format(flag1,flag2,operator.and_(flag1,flag2)))
print('{} or {} : {}'.format(flag1,flag2,operator.or_(flag1,flag2)))
print('not {} : {}'.format(flag1,operator.not_(flag1)))
True and False : False
True or False : True
not True : False

문제1

10~100사이 난수 중 십의자리와 일의자리가 각각 3의 배수인지 판단하는 코드 작성

import random
import operator

ranNum = random.randint(10,100)
num1 = operator.mod(ranNum,10)
num10 = operator.floordiv(ranNum,10)

print('난수 : {}'.format(ranNum))
print('십의 자리 : {}'.format(num10))
print('일의 자리 : {}'.format(num1))
print('십의 자리는 3의 배수이다 : {}'.format(operator.mod(num10,3)==0))
print('일의 자리는 3의 배수이다 : {}'.format(operator.mod(num1,3)==0))
난수 : 59
십의 자리 : 5
일의 자리 : 9
십의 자리는 3의 배수이다 : False
일의 자리는 3의 배수이다 : True

조건식

실행문1 if 조건문 else 실행문2
조건문에 부합하다면 실행문1을 실행하고
부합하지 않다면 실행문2를 실행

문제1

적설량을 입력하고 30mm이상이면 대설 경보를 발령, 그렇지 않으면 경보 해제하는 코드 작성

snowAmount = int(input('적설량 입력 :'))

print('적설량 : {}, 대설경보'.format(snowAmount)) if snowAmount >= 30 else print('적설량 : {}, 경보 해제'.format(snowAmount))
적설량 입력 :31
적설량 : 31, 대설경보

if문 _ 단일조건

  • 조건식 마지막 ':' 필수
  • 실행문 작성 시 들여쓰기 필수
if 10 > 5:
	print('10은 5보다 크다.')
10은 5보다 크다

if~else _ 양자택일

조건식 결과에 따라 둘 중에 하나가 실행

문제1

나이가 65세 이상이면 요금을 무료로 하는 프로그램

ageCut = 65
age = int(input('나이 입력 : '))

if age >= ageCut:
    print('무료 대상')
else:
    print('유료 대상 ')
나이 입력 : 67
무료 대상

문제2
입력한 실수의 소수점 첫번째 자리에서 반올림 하는 프로그램 코드 작성

import operator

flot1 = float(input('실수 입력 : '))

if operator.sub(flot1,int(flot1)) >= 0.5:
    print('반올림 : {}'.format(int(flot1)+1))
else:
    print('버림 : {}'.format(int(flot1)))
실수 입력 : 1.2
버림 : 1

if~else와 조건식 관계

모든 조건식은 if~else 문으로 변경 가능하지만
if~else문을 모두 조건식으로 변경하기는 어렵다.

if~elif _ 다자택일

  • 여러가지 조건식 결과에 따라 실행문이 결정됨
  • 주의사항
    - 조건식의 순서 중요
    - 조건 범위 정확히 명시

문제1

시험성적 입력하여 학점을 구하는 코드 작성
조건: 90이상 A, 80이상 B, 70이상 C, 70미만 F

exampleScore = int(input('시험 성적 입력 : '))
grades = ''

if exampleScore >= 90:
    grades ='A'
elif exampleScore >= 80:
    grades = 'B'
elif exampleScore >= 70:
    grades = 'C'
elif exampleScore >= 60:
    grades = 'D'
else:
    grades = 'F'

print('성적 : {} \t 학점 : {}'.format(exampleScore,grades))
시험 성적 입력 : 85
성적 : 85 	 학점 : B

문제2
자동차 배기량에 따라 세금 부과 다음 표를 보고 배기량 입력하면 세금이 출력되는 프로그램 코드 작성

carGas = int(input('자동차 배기량 입력 : '))
tax = ''

if carGas >= 5000:
    tax = '600,000원'
    print('세금 : {}'.format(tax))
elif carGas <5000 and carGas>=4000:
    tax = '500,000원'
    print('세금 : {}'.format(tax))
elif carGas <4000 and carGas>=3000:
    tax = '400,000원'
    print('세금 : {}'.format(tax))
elif carGas <3000 and carGas>=2000:
    tax = '300,000원'
    print('세금 : {}'.format(tax))
elif carGas <2000 and carGas>=1000:
    tax = '200,000원'
    print('세금 : {}'.format(tax))
else:
    print('100,000원')
자동차 배기량 입력 : 2134
세금 : 300,000원

중첩조건문

  • 조건문 안에 또다른 조건문
  • 일반적으로 3개 이상 중첩하지 않는다.

문제1
출퇴근 시 이용하는 교통수단에 따라 세금감면 정책을 한다면 다음 내용에 맞게 프로그램 작성

userSelect = int(input('출퇴근 대상인가? 1.YES \t2.NO\n'))

if userSelect == 1:

    trans = int(input('이용 교통수단 : 1.도보,자전거 \t2.버스,지하철 \t3.자가용\n'))
    if trans == 1:
        print('세금감면 5%')
    elif trans ==2:
        print('세금감면 3%')
    elif trans ==3:
        print('추가 세금 1%')

elif userSelect ==2:
    print('세금 변동 없음')

else:
    print('잘못 입력 했습니다.')
출퇴근 대상인가? 1.YES 	2.NO
1
이용 교통수단 : 1.도보,자전거 	2.버스,지하철 	3.자가용
2
세금감면 3%
출퇴근 대상인가? 1.YES 	2.NO
2
세금 변동 없음
출퇴근 대상인가? 1.YES 	2.NO
3
잘못 입력 했습니다.

반복문

특정 실행을 반복하는 것

  • 프로그램이 간결하고 유지보수가 쉽다.

문제1
2단 출력

  • 비효율적방법
print('{} * {} = {}'.format(2,1,(2*1)))
print('{} * {} = {}'.format(2,2,(2*2)))
print('{} * {} = {}'.format(2,3,(2*3)))
print('{} * {} = {}'.format(2,4,(2*4)))
print('{} * {} = {}'.format(2,5,(2*5)))
print('{} * {} = {}'.format(2,6,(2*6)))
print('{} * {} = {}'.format(2,7,(2*7)))
print('{} * {} = {}'.format(2,8,(2*8)))
print('{} * {} = {}'.format(2,9,(2*9)))
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18
  • for문을 이용한 효율적인 반복
for i in range(1,10):
    print('{} * {} = {}'.format(2, i, (2 * i)))
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

1. format() 사용해 숫자 세자리마다 콤마(,) 붙이기

num = 300000
commaNum = format(num,',')	#포인트
print(commaNum, '원')
300,000 원

2. 출력창에 작은따옴표(')출력

작은따옴표를 출력 하고 싶은 곳에 \' 를 입력

print('\'A\', \'B\' ')
'A', 'B' 

3. pass

조건식에서 실행문을 아직 정하지 못했지만 코드확인이 필요 할 때는
pass 를 사용하면 된다.

  • 실행문을 작성하지 않고 실행을 하게 되면 오류가 생긴다.

4. len()

문자 길이를 나타내는 함수

print(len(' 가나다'))  #공백문자도 문자
4
profile
취업공부

0개의 댓글