어제 저녁 시할아버지 제사로 포항을 급하게 다녀왔다.
포항가는 KTX 안에서 강의를 들었는데 아직 디지털기기 쪼렙이라 패드로 키보드를 치는건 무리더라 ㅠㅠ
내가 아직 기계치일수도 있는 것이기도 하고, 늦은 공부를 시작해 보련다.
정리 할 공부량이 많지만 요번주 시간이 너무 빠르다 ㅠㅠ
화이팅!!
파이썬 기초1
파이썬 기초2~3
파이썬 기초4
파이썬 기초5
산술연산자(덧셈,뺄셈>
산술연산자<곱셈과 나눗셈>
산술연산자<나머지와 몫>
산술연산자<거듭제곱>
복합연산자
파이썬 기초6
비교연산자<숫자비교>
비교연산자<문자비교>
논리연산자
operator모듈
파이썬 기초7
파이썬 기초8
파이썬 기초9~10
파이썬 기초문풀1
파이썬 기초문풀2
파이썬 기초문풀3
📝 weekly 데이터 사이언스 스쿨 퀴즈
result = data1 + data2
# 정수를 이용한 덧셈
num1 = 9
num2 = 3
result = num1 +num2
print(f'result = {result}')
# 실수를 이용한 덧셈
fNum1 = 3.14
fNum2 = 0.12
result = fNum1 + fNum2
print(f'result : {result}')
print("result : %.2f" % result)
# 정수와 실수를 이용한 덧셈
result = num1 + fNum2
print(f'result : {result}')
# 문자를 이용한 덧셈
str1 = 'Good'
str2 = ' '
str3 = 'morning'
result = str1 + str2 + str3
print(f'result : {result}')
# 숫자와 문자를 이용한 덧셈
result = num1 + str1
print(f'result : {result}')
result = 12
result : 3.2600000000000002
result : 3.26
result : 9.12
result : Good morning
TypeError: unsupported operand type(s) for +: 'int' and 'str'
실습_01
# 국어, 영어, 수학 점수를 입력하고 합계를 출력해보자.
kor = int(input('국어 점수 : '))
eng = int(input('영어 점수 : '))
mat = int(input('수학 점수 : '))
total = kor + eng + mat
print('국어 점수 {}'.format(kor))
print('영어 점수 {}'.format(eng))
print('수학 점수 {}'.format(mat))
print('합계 {}'.format(total))
국어 점수 : 85
영어 점수 : 90
수학 점수 : 95
국어 점수 85
영어 점수 90
수학 점수 95
합계 270
# 정수를 이용한 뺄셈
num1 = 10
num2 = 29
result = num1 - num2
print(f'num1 : {num1}')
print(f'num2 : {num2}')
print(f'result : {result}')
# 실수를 이용한 뺼셈
fNum1 = 3.14
fNum2 = 0.14
result = fNum1 - fNum2
print(f'fNum1 : {fNum1}')
print(f'fNum2 : {fNum2}')
print(f'result : {result}')
print(f'type of result : {type(result)}')
# 정수와 실수를 이용한 뺄셈
result = num1 - fNum1
print(f'Num1 : {num1}')
print(f'fNum1 : {fNum1}')
print(f'result : {result}')
print(f'type of result : {type(result)}')
# 문자(열)을 이용한 뺄셈
str1 = 'Good'
str2 = ' '
str3 = 'afternoon'
result = str1 - str2 - str3
print('result : {}'.format(result))
num1 : 10
num2 : 29
result : -19
fNum1 : 3.14
fNum2 : 0.14
result : 3.0
type of result : <class 'float'>
Num1 : 10
fNum1 : 3.14
result : 6.859999999999999
type of result : <class 'float'>
TypeError: unsupported operand type(s) for -: 'str' and 'str'
실습_02
# 이번달 알바비와 카드값을 입력하고, 남은 금액이 얼마인지 출력해 보자.
partTimePay = int(input('알바비 입력 : '))
cardMoney = int(input('카드값 입력 : '))
result = partTimePay - cardMoney
print('알비비 : {}원'.format(partTimePay))
print('카드값 : {}원'.format(cardMoney))
print('남는 금액 : {}원'.format(result))
알바비 입력 : 800000
카드값 입력 : 453000
알비비 : 800000원
카드값 : 453000원
남는 금액 : 347000원
# 숫자(정수, 실수)를 이용한 곱셈
num1 = 20
fNum1 = 3.14
result = num1 * fNum1
print('result : {}'.format(result))
print('result : %.2f' % result)
# 문자(열)을 이용한 곱셈
str1 = 'Hi '
result = str1 * 7
print('result : {}'.format(result))
# 숫자(정수, 실수)를 이용한 나눗셈
num1 = 10
num2 = 3
result = num1 / num2
print('num1 : {}, num2 : {}'.format(num1, num2))
print('result :{}'.format(result))
print('result : %.2f' % result)
# 0을 나눗셈 하는 경우
num1 = 0
num2 = 3
result = num1 / num2
print('result : {}'.format(result))
# 0으로 나누는 경우
result = num2 / num1
print('result :{}'.format(result))
result : 62.800000000000004
result : 62.80
result : Hi Hi Hi Hi Hi Hi Hi
num1 : 10, num2 : 3
result :3.3333333333333335
result : 3.33
result : 0.0
ZeroDivisionError: division by zero
# 나눗셈의 결과는 항상 실수(float)이다.
num1 = 20
num2 = 10
result = num1 / num2
print('result :{}'.format(result))
print('type of result : {}'.format(type(result)))
result :2.0
type of result : <class 'float'>
실습_03
# 국어, 영어, 수학 점수를 입력하고 합계와 평균을 출력해 보자.
kor = int(input('국어 점수 : '))
eng = int(input('영어 점수 : '))
mat = int(input('수학 점수 : '))
total = kor + eng + mat
print('국어 점수 {}'.format(kor))
print('영어 점수 {}'.format(eng))
print('수학 점수 {}'.format(mat))
print('합계 {}'.format(total))
print('평균 {}'.format(total / 3))
print('평균 %.2f' % (total / 3))
국어 점수 : 85
영어 점수 : 90
수학 점수 : 85
국어 점수 85
영어 점수 90
수학 점수 85
합계 260
평균 86.66666666666667
평균 86.67
실습_04
# 학급 전체 학생수 입력
# 한 모둠에 속하는 학생수 입력
# 전체 모둠 수 입력
everyOne = int(input('전체 학생수 : '))
stuCntOfGroup = int(input('한 모둠 학생 수 : '))
allGroupCnt = everyOne / stuCntOfGroup
print('전체 학생 수 : {}'.format(everyOne))
print('한 모둠 학생 수 : {}'.format(stuCntOfGroup))
print('모둠 수 : {}'.format(allGroupCnt))
print('모둠 수 : {}'.format(int(allGroupCnt)))
전체 학생수 : 25
한 모둠 학생 수 : 4
전체 학생 수 : 25
한 모둠 학생 수 : 4
모둠 수 : 6.25
모둠 수 : 6
# 예시 _ / 나눗셈
num1 = 10
num2 = 3
result = num1 / num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
# 나눗셈 결과 나머지 만 구함 _ % 나머지
num1 = 10
num2 = 3
result = num1 % num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
# 나눗셈 결과 몫 만 구함 _ // 몫
num1 = 10
num2 = 3
result = num1 // num2
print('num1: {}, num2: {}, result: {}'.format(num1, num2, result))
num1: 10, num2: 3, result: 3.3333333333333335
num1: 10, num2: 3, result: 1
num1: 10, num2: 3, result: 3
num1 = 10
num2 = 3
result = divmod(num1, num2) # 인덱스 개념 [3, 1]
print('result: {}'.format(result))
print('몫 : {}'.format(result[0]))
print('나머지 : {}'.format(result[1]))
result: (3, 1)
몫 : 3
나머지 : 1
실습_05
# 학급 전체 학생수 입력
# 한 모둠에 속하는 학생수 입력
# 전체 모둠 수과 남는 학생수 입력
everyOne = int(input('전체 학생수 : '))
stuCntOfGroup = int(input('한 모둠 학생 수 : '))
allGroupCnt = everyOne // stuCntOfGroup
overGroupCnt = everyOne % stuCntOfGroup
print('전체 학생 수 : {}'.format(everyOne))
print('한 모둠 학생 수 : {}'.format(stuCntOfGroup))
print('모둠 수 : {}'.format(allGroupCnt))
print('남는 학생 수 :{}'.format(overGroupCnt))
# divmod() 함수를 이용
result = divmod(everyOne, stuCntOfGroup)
print('result : {}'.format(result))
print('모둠 수 : {}'.format(result[0]))
print('남는 학생 수 : {}'.format(result[1]))
전체 학생수 : 25
한 모둠 학생 수 : 4
전체 학생 수 : 25
한 모둠 학생 수 : 4
모둠 수 : 6
남는 학생 수 :1
result : (6, 1)
모둠 수 : 6
남는 학생 수 : 1
실습_06
# 123개의 사과를 4개씩 직원들한테 나누어 주려고 한다.
# 최대 나누어 줄수 있는 직원수와 남는 사과 개수를 출력해 보자.
emploree = 123
apple = 4
result = divmod(emploree, apple)
print('사과를 나누어 줄 수 있는 최대 직원 수 : {}명'.format(result[0]))
print('남는 사과의 갯수 : {}명'.format(result[1]))
사과를 나누어 줄 수 있는 최대 직원 수 : 30명
남는 사과의 갯수 : 3명
num1 = 2
num2 = 3
result = num1 ** num2
print('num1 : {}'.format(num1))
print('num2 : {}'.format(num2))
print('result : {}'.format(result))
num1 : 2
num2 : 3
result : 8
# 2의 제곱근 구하기
result = 2 ** (1/2)
print('2의 제곱급 %f' % result)
print('2의 제곱급 %.2f' % result)
# 2의 3제곱근 구하기
result = 2 ** (1/3)
print('2의 3제곱급 %f' % result)
print('2의 3제곱급 %.2f' % result)
# 2의 4제곱근 구하기
result = 2 ** (1/4)
print('2의 4제곱급 %f' % result)
print('2의 4제곱급 %.2f' % result)
2의 제곱급 1.414214
2의 제곱급 1.41
2의 3제곱급 1.259921
2의 3제곱급 1.26
2의 4제곱급 1.189207
2의 4제곱급 1.19
sqrt()함수를 이용한 제곱근 구하기
→ 항상 제곱근 만 구한다.
import math
print('2의 제곱근 %f' % math.sqrt(2))
print('2의 제곱근 %.2f' % math.sqrt(2))
print('3의 제곱근 %f' % math.sqrt(3))
print('3의 제곱근 %.2f' % math.sqrt(3))
print('4의 제곱근 %f' % math.sqrt(4))
print('4의 제곱근 %.2f' % math.sqrt(4))
pow()함수를 이용한 제곱근 구하기
→ [0]의 [1] 제곱근을 구하는 함수.
import math
print('2의 3제곱근 %f' % math.pow(2, 3))
print('3의 4제곱근 %f' % math.pow(3, 4))
2의 3제곱근 8.000000
3의 4제곱근 81.000000
실습_07
아들이 엄마한테 용돈을 받는데, 첫 달에는 200원을 받고 매월 이전 달의 2배씩 인상하기로 했다.
12개월째 되는 달에는 얼마를 받을 수 있는 지 계산해 보자.
firstMonthMoney = 200
after12Month = ((firstMonthMoney * 0.01) ** 12) * 100
print('12개월 후 용돈 : %.f 원' % after12Month)
after12Month =int(after12Month)
strResult = format(after12Month, ',')
print('12개월 후 용돈 : %s원' % strResult)
print(strResult, '원')
12개월 후 용돈 : 409600 원
12개월 후 용돈 : 409,600원
409,600 원
num1 = 10
num2 = 20
result = num1 + num2
복합연산자
- +=
덧셈 연산 후 할당- -=
뺄셈 연산 후 할당- *=
곱셈 연산 후 할당- /=
나눗셈 연산 후 할당- %=
나머지 연산 후 할당- //=
몫 연산후 할당- **=
거듭제곱 연산후 할당
예시
num = 10
num1 = num + 6
num1 += 1
print('num1 : {}'.format(num1))
num1 : 17
실습_08
다음 표를 참고해서 연간 누적 강수량을 출력해보자.
|월| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12|
|강수량| 30| 45| 47| 55| 65| 100| 128| 209| 204| 186| 67| 25|
rain = 0
totalRainAmount = 0
totalRainAmount += 30
print('1월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 45
print('2월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 47
print('3월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 55
print('4월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 65
print('5월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 100
print('6월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 128
print('7월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 209
print('8월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 204
print('9월 누적 강수량 : {}mm '.format(totalRainAmount))
totalRainAmount += 186
print('10월 누적 강수량 : {}mm '.format(format(totalRainAmount,',')))
totalRainAmount += 67
print('11월 누적 강수량 : {}mm '.format(format(totalRainAmount,',')))
totalRainAmount += 25
print('12월 누적 강수량 : {}mm '.format(format(totalRainAmount,',')))
avgRainAmount = totalRainAmount / 12
print('-' * 30)
print('연간 누적 강수량 : {}mm '.format(format(totalRainAmount,',')))
print('연간 평균 강수량 : {}mm '.format(avgRainAmount))
print('-' * 30)
1월 누적 강수량 : 30mm
2월 누적 강수량 : 75mm
3월 누적 강수량 : 122mm
4월 누적 강수량 : 177mm
5월 누적 강수량 : 242mm
6월 누적 강수량 : 342mm
7월 누적 강수량 : 470mm
8월 누적 강수량 : 679mm
9월 누적 강수량 : 883mm
10월 누적 강수량 : 1,069mm
11월 누적 강수량 : 1,136mm
12월 누적 강수량 : 1,161mm
연간 누적 강수량 : 1,161mm
연간 평균 강수량 : 96.75mm
num1 = 10
num2 = 5
result = num1 > num2 # True
print('num1 > num2 : {}'.format(result))
result = num1 >= num2 # True
print('num1 >= num2 : {}'.format(result))
result = num1 < num2 # False
print('num1 < num2 : {}'.format(result))
result = num1 <= num2 # False
print('num1 <= num2 : {}'.format(result))
result = num1 == num2 # False
print('num1 == num2 : {}'.format(result))
result = num1 != num2 # True
print('num1 != num2 : {}'.format(result))
실습_09
숫자 두개를 입력한 후 비교연산 결과를 출력하는 코드를 작성하자.
userInputNumber1 = int(input('첫번째 숫자 입력 : '))
userInputNumber2 = int(input('두번째 숫자 입력 : '))
print('{} > {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 > userInputNumber2)))
print('{} >= {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 >= userInputNumber2)))
print('{} < {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 < userInputNumber2)))
print('{} <= {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 <= userInputNumber2)))
print('{} == {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 == userInputNumber2)))
print('{} != {} : {}'.format(userInputNumber1, userInputNumber2, (userInputNumber1 != userInputNumber2)))
첫번째 숫자 입력 : 2
두번째 숫자 입력 : 15
2 > 15 : False
2 >= 15 : False
2 < 15 : True
2 <= 15 : True
2 == 15 : False
2 != 15 : True
실습_10
자동차의 전장과 전폭을 입력하면 자동차 기계 세차 가능여부를 출력하는 코드를 작성해 보자.
(최대 전장길이 : 5200mm, 최대 전폭길이 : 1985mm)
maxLength = 5200
maxWidth = 1985
myCarLength = int(input('전장 길이 입력 : '))
myCarWidth = int(input('전폭 길이 입력 : '))
print('전장 가능 여부 : {}'.format(myCarLength <= maxLength))
print('전폭 가능 여부 : {}'.format(myCarWidth <= maxWidth))
전장 길이 입력 : 5201
전폭 길이 입력 : 1985
전장 가능 여부 : False
전폭 가능 여부 : True
# 문자와 아스키 코드 변환
cha1 = 'A' # 65
cha2 = 'S' # 83
print('\'{}\' > \'{}\' : {}'.format(cha1, cha2, (cha1 > cha2)))
print('\'{}\' >= \'{}\' : {}'.format(cha1, cha2, (cha1 >= cha2)))
print('\'{}\' < \'{}\' : {}'.format(cha1, cha2, (cha1 < cha2)))
print('\'{}\' <= \'{}\' : {}'.format(cha1, cha2, (cha1 <= cha2)))
print('\'{}\' == \'{}\' : {}'.format(cha1, cha2, (cha1 == cha2)))
print('\'{}\' != \'{}\' : {}'.format(cha1, cha2, (cha1 != cha2)))
'A' > 'S' : False
'A' >= 'S' : False
'A' < 'S' : True
'A' <= 'S' : True
'A' == 'S' : False
'A' != 'S' : True
ord() 함수 _ 알파벳(문자)을 입력하면 아스키 코드(숫자)로 출력(10진법)print('\'A\' -> {}'.format(ord('A'))) print('\'S\' -> {}'.format(ord('S')))
chr() 함수 _ 아스키 코드(숫자)를 입력하면 알파벳(문자)로 출력print('65 -> {}'.format(chr(65))) print('83 -> {}'.format(chr(83)))
str1 = 'Hello'
str2 = 'hello'
print('{} == {} : {}'.format(str1, str2, (str1 == str2)))
print('{} != {} : {}'.format(str1, str2, (str1 != str2)))
Hello == hello : False
Hello != hello : True
실습_11
아이디와 패스워드를 입력한 후 비교결과을 출력하자.
systemID = 'administrator@gmail.com'
systemPW = '!@#$%qwertyQWERTY'
userInputID = input('아이디 입력 : ')
userInputPW = input('비밀번호 입력 : ')
print('아이디 비교 결과 : {}'.format(systemID == userInputID))
print('비밀번호 비교 결과 : {}'.format(systemPW == userInputPW))
아이디 입력 : administrator@gmail.com
비밀번호 입력 : 12345qwerQWERTY
아이디 비교 결과 : True
비밀번호 비교 결과 : False
피연산자의 논리(True/False)를 이용한 연산
논리 연산자 종류 : and, or, not
and 연산
A and B
A와 B모두 True인 경우만 결과값으로 True이다.
or 연산
A or B
A와 B중 어느하나만 True이면 결과값은 True이다.
not 연산 (부정연산자)
not A
A의 상태를 부정하는 결과를 나타낸다.
예시
백신 접종 대상자는 20세 미만 또는 65세이상자에 한합니다.
논리연산자를 이용해서 코딩해보자.
age = int(input('나이 입력 : '))
vaccine = (age < 20) or (age >= 65)
print('age: {}, result: {}'.format(age, vaccine))
나이 입력 : 38
age: 38, result: False
나이 입력 : 66
age: 66, result: True
실습_12
국어, 영어, 수학 점수를 입력하고 평균이 10점 이상이면 True를 출력하는 코드를 작성해보자.
(단, 과목별 점수가 최소 60이상인 경우에 True를 출력한다.)
passScore1 = 60
passScore2 = 70
kor = int(input('국어 점수 입력 : '))
eng = int(input('영어 점수 입력 : '))
mat = int(input('수학 점수 입력 : '))
avgScore = (kor + eng + mat) / 3
passScoreResult = avgScore >= passScore2
korResult = kor >= passScore1
engResult = eng >= passScore1
matrResult = mat >= passScore1
subjectResult = korResult and engResult and matrResult
print('평균 : {}, 결과 : {}'.format(avgScore, passScoreResult))
print('국어 : {}, 결과 : {}'.format(kor,korResult))
print('영어 : {}, 결과 : {}'.format(eng,engResult))
print('수학 : {}, 결과 : {}'.format(mat,matrResult))
print('과락 결과 : {}'.format(subjectResult))
print('최종 결과 : {}'.format(avgScore and subjectResult))
국어 점수 입력 : 89
영어 점수 입력 : 70
수학 점수 입력 : 60
평균 : 73.0, 결과 : True
국어 : 89, 결과 : True
영어 : 70, 결과 : True
수학 : 60, 결과 : True
과락 결과 : True
최종 결과 : True
모듈이란?
누군가 이미 만들어 놓은 훌륭한 기능
num1 = 8
num2 = 3
import operator
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
num1 = 8
num2 = 3
import operator
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('{} == {} : {}'.format(num1, num2, operator.eq(num1,num2)))
print('{} != {} : {}'.format(num1, num2, operator.ne(num1,num2)))
8 > 3 : True
8 >= 3 : True
8 < 3 : False
8 <= 3 : False
8 == 3 : False
8 != 3 : True
flag1 = True
flag2 = False
import operator
print('{} and {} : {}'.format(flag1, flag2, operator.and_(flag1,flag2)))
print('{} or {} : {}'.format(flag1, flag2, operator.or_(flag1,flag2)))
print('{} not {} : {}'.format(flag1, flag2, operator.not_(flag1)))
True and False : False
True or False : True
True not False : False
실습_13
이전 시간에 실습했던 백신 접종 대상자 출력코드를 operator 모듈을 이용해서 변경해 보자.
[이전 실습]
백신접종 대상자는 20세 미만 또는 65세 이상자에 한합니다.를 논리연산자를 이용해서 코딩해보자.
age = int(input('나이 입력 : '))
import operator
vaccine =operator.or_(operator.lt(age, 20), operator.ge(age, 65))
print('age : {}, result : {}'.format(age, vaccine))
나이 입력 : 48
age : 48, result : False
나이 입력 : 7
age : 7, result : True
실습_13
import operator
import random
rInt = random.randint(10, 100)
num10 = operator.floordiv(rInt, 10) # 몫
num1 = operator.mod(rInt, 10) # 나머지
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)) # 나머지
난수 : 23
십의 자리 : 2
일의 자리 : 3
십의 자리는 3의 배수이다. : False
일의 자리는 3의 배수이다. : True
와아.. 진짜 하루 스터디 노트 놓치니까 답이 없네ㅠㅠ
부지런히 해도 힘들구나... 영상강의도 중요한데 매일 하는 스터디 노트도 중요함
안 중요한게 하나도 없는 것 같은데.. 점점 많아지는 과제랑 수업을 잘 할수 있을까?
게을러 지면 낙오다. 하루의 귀찮아하면 다음은 없는거야!! ㅠ
힘들다 진짜... 벌서 이렇게 힘들면 안되는데 사람들은 어떻게 공부하고 있을까???