연산자 종류
주의) 숫자와 문자를 이용한 덧셈은 사용 불가능하다.
ex)
result = num1 +str1
print(f;result : {result}'})
주의) 문자열을 더할수는 있지만 뺄수는 없다.
str1 = 'Good'
str2= ' '
str3 = 'afternoon'
result = str1- str2 - str3
print('result : {}'.format(result))
num1 = 20
num2 = 5
result = num1 / num2
print('result: {}'.format(result))
#실수 4.0이 출력된다.
-나눗셈 후 결과 나머지만 구한다.(나누기를 했을때 '나머지'만 구한다.)
ex)
num1 =10
num2 = 3
result = num1 // num2
print(result) #10나누기3 의 나머지 1이 나온다.
num1 =10
num2 = 3
result = num1 // num2
print(result) #10나누기3 의 나머지 1이 나온다
####### 또다른 예시
allStuCnt = int(input('전체 학생 수:'))
stuCntOfGroup = int(input('한모둠 한생 수: '))
result = divmod(allStuCnt, stuCntOfGroup) # 전체학생25, 한모둠 4 입력시 divmod의 값(6,1)
# groupCnt = allStuCnt // stuCntOfGroup
# overStuCnt = allStuCnt % stuCntOfGroup #남는학생
print('전체 학생 수: {}'.format(allStuCnt))
print('한 모둠 학생 수 : {}'.format(stuCntOfGroup))
print('모둠 수: {}'.format(result[0]))
print('남는 학생 수: {}'.format(result[1]))
num1 = 2
num2 = 3
result = num1 ** num2
print('result: {}'.format(result)) #8출력
####################
#제곱근 구하기
#-n의 m제곱근 공식
#n**(1/m)
#2의 2제곱근
result = 2 ** (1/2)
print('result %.2f'% result)
#2의 3제곱근
result = 2 ** (1/3)
print('result %.2f'% result)
#거듭제곱 실습문제
# 첫달 200원을 받고 매월 이전 달의 2배식 인상하기로 한다.
# 12개월째 되는 달에는 얼마를 받을 수있는지 계산해보자
firstMonthMoney = 200
after12Month = ((firstMonthMoney * 0.01) ** 12)* 100
# 200 *0.01 곱하면 2가된다. 괄호밖에 100을
#수행해서 12개월 후 받을 수있는 금액을 구할 수 있다.
print('12개월 후 용돈 : {}'.format(after12Month))
strResult = format(after12Month,',')
print(strResult, '원')
#sqrt() 예시
import math
print(math.sqrt(5)) #5의 제곱근 2.2360....출력
#pow() 예시
import math
print(math.pow(2,3)) # 2*2*2 = 8 출력
복합 연산자 ex)
num1 = 10
num1 +=3 # num1 = num1 + 3
print('num1 : {}'.format(num1))
#거듭 제곱도 가능
num = 10
num **=3 # num = num**3
print('num: {}'.format(num))
ex)
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))
result = num1 == num2
print('num1 == num2 : {}'.format(result))
1.문자 비교: 아스키 코드를 이용한 비교연산이다.
ex)1
char1 = 'A' #65
char2 = 'S' #83
ex)2
total = char1 > char2
print(total)
A는 S보다 작기때문에 bool의 False가 출력된다.
2.문자와 아스키 코드 변환 (소문자,대문자 값이 서로 다르다)
ex)
ord함수(문자를 10진수 정수로 표현)
print('A -> {}'.format(ord('A))) ->65
char()함수(정수10진수를 문자로 표현)
print('65 -> {}'.format(char(65))) -> A
3.문자열 비교(문자열 자체를 비교 한다.)
크다 작다 와 같은 비교는 못하고 문자열 자체를 비교
ex) str1= 'Hello'와 str2= 'hello' -> Hello와 hello를 비교한다
str1 = 'Hello'
str2 = 'hello'
print('{} == {} : {}'.format(str1,str2, (str1 == str2))) #False
print('{} != {}: {}'.format(str1,str2, (str1 != str2))) #True
#and
print('{} and {}: {}'.format(True, True, (True and True)))
print('{} and {}: {}'.format(False, True, (False and True)))
print('{} and {}: {}'.format(True, False, (True and False)))
print('{} and {}: {}'.format(False, False, (False and False)))
#or
print('{} and {}: {}'.format(True, True, (True or True)))
print('{} and {}: {}'.format(False, True, (False or True)))
print('{} and {}: {}'.format(True, False, (True or False)))
print('{} and {}: {}'.format(False, False, (False or False)))
#not
not A: A이 상태를 부정하는 결과를 나타낸다.
print('not{}: {}'.format(True,(not True)))
#False를 부정했더니 True 출력
print('not{}: {}'.format(False,(not False)))
#True를 부정했더니 False 출력
종류:
"+" --> operator.add()
"-" --> operator.sub()
"*" --> operator.mul()
"/" --> operator.truediv()
"%" --> operator.mod()
"//" --> operaotr.floordiv()
"**" --> operator.pow()
ex)기본사용
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)))
import random
rInt = random.randint(10, 100) #10~100사이의 랜덤수를 뽑아내서 num10과 num1에 들어간다.
num10 = operator.floordiv(rInt, 10) #loordiv는 // 를 의미하며 몫만 구한다. 10의자리 구한다
num1 = operator.mod(rInt, 10) # mod는 %를 의미하며 나머지를 의미한다. 1의자리를 구한다.
print('난수: {}'.format(rInt))
print('십의 자리: {}'.format(num10))
print('일의 자리: {}'.format(num1))
print('십의 자리를 3의 배수이다. : {}'.format(operator.mod(num10, 3) ==0))
print('일의 자리는 3의 배수이다. : {}'.format(operator.mod(num1, 3) ==0))
"==" --> operator.eq()
"!=" --> operaotr.ne()
">" --> operator.gt()
">=" --> operator.ge()
"<" --> oprator.lt()
"<=" --> operator.le()
2.논리 연산자 함수
and --> operator.and()
or --> operator.or()
not --> operator.not_()
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)))
print('---------------')
#비교 연산자와 import operator를 이용한 실습문제
import operator
age = int(input('나이 입력'))
vac = operator.or_(operator.lt(age , 20), operator.ge(age, 65))
#operator.lt 는 비교연산자 '<' '>'를 의미한다.
#operator.ge 는 비교 연산자 '<=' '=>'를 의미한다.
print('age: {}, vaccine: {}'.format(age,vac))
1.조건식이란, 어떤 조건에 따라 실행이 분기 되는 식이다.
2. A if 조건식 else B -> 조건식 결과가 True이면 A실행, 그렇지 않으면 B실행
ex)예제
num1 = 1000
num2 = 100
numResult = True if num1 > num2 else False
print('num > num2 : {}'.format(numResult))
print('num1은 num2보다 크다.') if numResult else print('num1은 num2 보다 크지않다.')
-if 조건문 종류-
if문 -> 단일조건
if~else문 -> 양자택일 (둘중하나 고른다.)
if~elif문 -> 다자택일(다중조건: 여러가지 조건이 나올때 사용한다.)
ex) 90점이상 A , 80점이상 B, 70점 이상 C
(들여쓰기 필수!)
if 조건식:
실행문
ex) if문 기본 예제
if 10 < 5: #10< 5로 설정되어있으면 if문을 바로 빠져나와서 밑에 조건문이 끝났다.를 실행한다.
print('10은 5보다 크다')
print('또 다른 실행문')
# 콜론을 기준으로 밑으로 코드블록이라고 한다. 코드 블록을 들여쓰기를 해야한다.
# print('10은 5보다 크다') -> 코드 블록
# print('또 다른 실행문') -> 코드 블록
print('조건문이 끝났다.') #if문의 실행문이 아니므로 항상 실행된다.
if~else: 조건식 결과에 따라 둘 중 하나가 실행된다.
ex) if~else 예시와 구현을 미루는 pass
#pass 키워드
passScore = 80
myScore = int(input('점수 입력:'))
# if myScore >= passScore:
# print('pass!')
#
# if myScore < passScore:
# print('Fail')
if myScore >= passScore :
pass #조건된 실행문은 없지만 넘어간다 는뜻
else:
pass #지금은 안쓰지만 추후에 사용하겠다
#출력하면 에러 발생이 없다
###############################
#소수점 첫 번째 자리에서 반올림하는 프로그램을 만들어 보자
#1.소수입력 :3.56 --> 결과: 4
#2.소수입력 :3.14 --> 결과 :3
floatNum = float(input('소수 입력:'))
if floatNum - int(floatNum) >= 0.5:
#3.56을 넣으면 int(floatNum)은 int에 의해서 3이된다.
#즉 3.56-3 = 0.56이되어서 >=0.5랑 조건이 충족이되고
#올림이 되어서 4가 출력이된다.
#3.14의 경우 0.14가 되어서 >=0.5랑 충족이 되지 않는다.
#그래서 else로 넘어가고 버림이 되어 3이 출력이된다.
print('올림: {}'.format(int(floatNum) +1))
else:
print('버림: {}'.format(int(floatNum)))
#1. 조건식 결과에 따른 실행만 하는 경우
print('포인트 사용') if userPoint >= minAblePoint else print('포인트 사용 불가능')
# --> 변수 없이 바로 print함수로 if의 결과가 실행된다.
#2. 조건식 결과를 변수에 할당하는 경우
result = '가능' if userPoint >= minAblePoint else '불가능'
print('포인트 사용 가능 여부 : {}.format(result))
#--> 1번과 달리 문자를 result 변수에 초기화 해서 내용을 출력했다.
#3. if~else문은 모든 조건식(삼항 연산자)를
#if~else로 변경할수있지만 조건식이 너무 많은 경우는 변경이 힘들다
if userPoint >=minAblePoint:
result = '가능'
else:
result = '불가능'
lackPoint = minAblePoint - userPoint
print('포인트가 {}부족합니다.'.format(lackPoint)
print('포인트 사용 가능 여부: {}'.format(result))
#잘못된 예시
# 위경우 70점일떄의 조건을 먼저 정의했는데
# 이러면 문제가 발생한다. 80을 넣어도 C , 90을 넣어도 C가 출력된다.
# 그 이유는 if의 70점 조건때문이다.
exampleScore = int(input('시험 성적 입력 : '))
grades = ''
if exampleScore >=70 :
grades = 'C'
elif exampleScore >=90:
grades = 'A'
elif exampleScore >= 80:
grades = 'B'
elif exampleScore >=60:
grades = 'D'
else:
grades = 'F'
print('성적: {} \t 학점: {}'.format(exampleScore, grades) )
#########################
#위 코드를 올바르게 수정
#위 문제 같은경우는 논리 연산자를 사용해서 정의할수 있다.
exampleScore = int(input('시험 성적 입력: '))
grades = ''
if exampleScore >=70 and exampleScore < 80:
grades = 'C'
elif exampleScore >= 90:
grades = 'A'
elif exampleScore >=80 and exampleScore < 90:
grades = 'B'
elif exampleScore >= 60 and exampleScore < 70:
grades = 'D'
else:
grades = 'F'
print('성적: {} \t 학점: {}'.format(exampleScore, grades))
제로베이스 2일 차! 오늘도 파이썬 강의를 들었다.
오늘은 공부 방법을 조금 바꾸어 보았다. 제대로 알고 있는 부분은
2배속으로 돌려서 강의 시청을 했다. 어제보다 1시간 일찍 공부를 끝냈다.
아직까진 공부에 부담은 없지만~~ 1~2주 내로 부담이 생길 거 같다^^
벨로그 작성 시간이 생각보다 오래 걸리는데 시간을 단축 시켜봐야겠다.
차근차근 공부해서 최종 프로젝트까지 가보자!