이번 제로베이스 데이터스쿨 1주차에 파이썬 중급 개념과 중급 문제 풀이 일부를 학습하였다.
1주일 학습 내용을 정리할겸 날짜별로 모르는 내용들을 정리하고자 한다.
def fun1():
print('fun1 호출')
fun2()
print('fun2 호출 후에 실행')
def fun2():
print('fun2 호출')
fun3()
def fun3():
print('fun3 호출')
fun1()
개념은 이해가 가지만 아직 이에 관련된 문제풀이를 하지 않아 활용하는데에는 어려울 것 같다..
def printNumber(*numbers):
for number in numbers:
print(number, end=', ')
print()
printNumber()
printNumber(13)
printNumber(2, 33, 44)
printNumber(3, 44)
매개 변수의 개수가 정해지지 않는 경우? 이 또한 익숙치 않다. 출력 결과를 보며 잠시 다시 복습하자.
13,
2, 33, 44,
3, 44,
import random
def getOddRandomNumber():
while True:
rNum = random.randint(1, 100)
if rNum % 2 != 0:
break
return rNum
print(f'returnValue: {getOddRandomNumber()}')
returnValue: 83
이제 랜덤 모듈 쓰는 방법은 간단하게라도 외워야겠지?
n = random.randint(1, 200)..
def calculator(n1, n2, operator):
def addCal():
print(f'덧셈 연산: {n1 + n2}')
def subCal():
print(f'뺄셈 연산: {n1 - n2}')
def mulCal():
print(f'곱셈 연산: {n1 * n2}')
def divCal():
print(f'나눗셈 연산: {n1 / n2}')
if operator == 1:
addCal()
elif operator == 2:
subCal()
elif operator == 3:
mulCal()
elif operator == 4:
divCal()
while True:
num1 = float(input('실수 n1 입력: '))
num2 = float(input('실수 n2 입력: '))
operatorNum = int(input('계산법 선택 (1~4 중 택 1 / 5 = 종료): '))
if operatorNum == 5:
print('bye')
break
calculator(num1, num2, operatorNum)
while True: 는 정말 많이 나왔는데 왜 아직도 나에게 익숙치 않는걸까...? if 와 else 랑도 비슷한 느낌이 나서 우선 if 구문을 먼저 떠올리곤 하는 것 같다..
getTriangleArea = lambda n1, n2: n1n2/2
getSquareArea = lambda n1, n2: n1n2
getCircleArea = lambda r: rr3.14
width = int(input('width length: '))
height = int(input('height length: '))
radius = int(input('radius length: '))
triangleresult = getTriangleArea(width, height)
squareresult = getSquareArea(width, height)
circleresult = getCircleArea(radius)
print('가로 = {}, 세로 = {}, 반지름 = {}'.format(width, height, radius))
print(triangleresult)
print(squareresult)
print(circleresult)
우선 간단하게 쓰는 법이라도 확실히 다시 익혀두자. 함수 기능이 복잡하지 않은 함수를 만들 때 굉장히 편하게 사용할 수 있을 것 같다.
scores = []
def addScores(s):
scores.append(s)
def getScores():
return scores
def getTotalScore():
total = 0
for s in scores:
total += s
return total
def getAvgScore():
avg = getTotalScore() / len(scores)
return avg
자료형 [], {}, () 등이 할당된 변수에 ex) 'sample', sample.append(n) (n 은 인자) 이렇게 사용한다.
listVar = [2, 3, 4, 5,6 , 11, 33, 4]
print(f'sum(listVar) = {sum(listVar)}')
print(f'max(listVar) = {max(listVar)}')
print(f'min(listVar) = {min(listVar)}')
print(f'거듭제곱(밑, 지수) {pow(13, 11)}')
print(f'round(소수, 몇째 자리){round(3.142434243, 3)}')
import math
print(math.fabs(-10))
print(math.fabs(-1.534235235))
print(f'올림 {math.ceil(6.66)}')
print(f'올림 {math.ceil(-6.66)}')
print(f'내림 {math.floor(5.59)}')
print(f'내림 {math.floor(-5.59)}')
print(f'버림 {math.trunc(5.21)}')
print(f'버림 {math.trunc(-5.21)}')
print(f'최대공약수 {math.gcd(144, 36)}')
print(f'팩토리얼 {math.factorial(10)}')
print(f'제곱근 {math.sqrt(121)}')
import time
now = time.localtime()
print(f'{now}')
#연도만
print(f'{now.tm_year}')
#월
print(f'{now.tm_mon}')
#일
print(f'{now.tm_mday}')
#시간
print(f'{now.tm_hour}')
#분
print(f'{now.tm_min}')
#초
print(f'{now.tm_sec}')
출력
sum(listVar) = 68
max(listVar) = 33
min(listVar) = 2
거듭제곱(밑, 지수) 1792160394037
round(소수, 몇째 자리)3.142
10.0
1.534235235
올림 7
올림 -6
내림 5
내림 -6
버림 5
버림 -5
최대공약수 36
팩토리얼 3628800
제곱근 11.0
time.struct_time(tm_year=2023, tm_mon=4, tm_mday=4, tm_hour=13, tm_min=36, tm_sec=34, tm_wday=1, tm_yday=94, tm_isdst=0)
2023
4
4
13
36
34
class Calculator:
def init(self):
self.number1 = 0
self.number2 = 0
self.result = 0
def add(self):
self.result = self.number1 + self.number2
return self.result
def sub(self):
self.result = self.number1 - self.number2
return self.result
def mul(self):
self.result = self.number1 * self.number2
return self.result
def div(self):
self.result = self.number1 / self.number2
return self.result
calculator = Calculator()
calculator.number1 = 10
calculator.number2 = 20
print(f'calculator.add(): {calculator.add()}')
print(f'calculator.sub(): {calculator.sub()}')
print(f'calculator.mul(): {calculator.mul()}')
print(f'calculator.div(): {calculator.div()}')
calculator.number1 = 88
calculator.number2 = 45
print(f'calculator.add(): {calculator.add()}')
print(f'calculator.sub(): {calculator.sub()}')
print(f'calculator.mul(): {calculator.mul()}')
print(f'calculator.div(): {calculator.div()}')
출력
calculator.add(): 30
calculator.sub(): -10
calculator.mul(): 200
calculator.div(): 0.5
calculator.add(): 133
calculator.sub(): 43
calculator.mul(): 3960
calculator.div(): 1.9555555555555555
class TemCls:
def init(self, n, s):
self.number = n
self.str = s
def printClsInfo(self):
print(f'self.number: {self.number}')
print(f'self.str: {self.str}')
tc1 = TemCls(10, 'Hello')
tc2 = tc1
tc1.printClsInfo()
tc2.printClsInfo()
tc2.number = 3.14
tc2.str = 'bye'
tc1.printClsInfo()
tc2.printClsInfo()
import copy
tc1 = TemCls(10, 'Hello')
tc = copy.copy(tc1)
tc1.printClsInfo()
tc2.printClsInfo()
tc2.number = 3.14
tc2.str = 'no'
tc1.printClsInfo()
tc2.printClsInfo()
self.number: 10
self.str: Hello
self.number: 10
self.str: Hello
self.number: 3.14
self.str: bye
self.number: 3.14
self.str: bye
self.number: 10
self.str: Hello
self.number: 3.14
self.str: bye
self.number: 10
self.str: Hello
self.number: 3.14
self.str: no
이 부분은 아무리 봐도 잘 모르겠다.
sort는 특정 순서대로 나열, pop 은 제외
BasicCalculator와 DeveloperCalculator 클래스를 다음과 같이 만들고 이들 클래스를 상속해서 Calculator 클래스를 만들고 사용하기
class BasicCalculator:
def add(self, n1, n2):
return n1 + n2
def sub(self, n1, n2):
return n1 - n2
def mul(self, n1, n2):
return n1 * n2
def div(self, n1, n2):
return n1 / n2
class DeveloperCalculator:
def mod(self, n1, n2):
return n1 % n2
def flo(self, n1, n2):
return n1 // n2
def exp(self, n1, n2):
return n1 ** n2
class NewCalculator(BasicCalculator, DeveloperCalculator):
def init(self):
pass
cal = NewCalculator()
print(cal.add(10, 55))
print(cal.sub(10, 55))
print(cal.mul(10, 55))
print(cal.div(10, 55))
print(cal.mod(10, 55))
print(cal.flo(10, 55))
print(cal.exp(10, 55))
상속은 문풀에서 확실히 다져놔야겠다는 생각.. 계속 눈으로 이해를 하지 말고 실행을 해보자