나눗셈 연산에서 나머지와 몫을 한번에 구할 수 있는 함수
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 ** (1/m)
result = 4 ** (1/2)
print('result : {}'.format(result))
result : 2.0
모듈을 사용할 때
import 모듈 #모듈 가져오기 모듈.함수() #모듈 사용
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
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비트 부호체계
쉽게 말해서, 컴퓨터에서 사용하는 문자를 숫자로 정해 놓은 것
아스키 코드 표
print('\'A\' -> {} '.format(ord('A')))
print('\'a\' -> {} '.format(ord('a')))
'A' -> 65
'a' -> 97
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와 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와 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
A의 상태를 부정하는 결과
print('not {} : {}'.format(True,(not True)))
print('not {} : {}'.format(False,(not False)))
not True : False
not False : True
산술연산자 관련 함수
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
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를 실행
적설량을 입력하고 30mm이상이면 대설 경보를 발령, 그렇지 않으면 경보 해제하는 코드 작성
snowAmount = int(input('적설량 입력 :'))
print('적설량 : {}, 대설경보'.format(snowAmount)) if snowAmount >= 30 else print('적설량 : {}, 경보 해제'.format(snowAmount))
적설량 입력 :31
적설량 : 31, 대설경보
- 조건식 마지막 ':' 필수
- 실행문 작성 시 들여쓰기 필수
if 10 > 5:
print('10은 5보다 크다.')
10은 5보다 크다
조건식 결과에 따라 둘 중에 하나가 실행
문제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문을 모두 조건식으로 변경하기는 어렵다.
- 여러가지 조건식 결과에 따라 실행문이 결정됨
- 주의사항
- 조건식의 순서 중요
- 조건 범위 정확히 명시
문제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 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
num = 300000
commaNum = format(num,',') #포인트
print(commaNum, '원')
300,000 원
작은따옴표를 출력 하고 싶은 곳에 \' 를 입력
print('\'A\', \'B\' ')
'A', 'B'
조건식에서 실행문을 아직 정하지 못했지만 코드확인이 필요 할 때는
pass 를 사용하면 된다.
- 실행문을 작성하지 않고 실행을 하게 되면 오류가 생긴다.
문자 길이를 나타내는 함수
print(len(' 가나다')) #공백문자도 문자
4