250930 TIL
2025. 9. 30. 18:25ㆍCourses/아이티윌 오라클 DBA 과정
복습 Quiz
# 문제1) 간단한 계산기 프로그램
"""
실행화면
3 + 5 = 8
3 - 5 = -2
3 * 5 = 15
3 / 5 = 0.6
3 % 5 = 3
"""
a = 3
b = 5
op = ["+", "-", "*", "/", "%"]
for o in op:
if o == "+":
print(f"{a} {o} {b} = {a + b}")
elif o == "-":
print(f"{a} {o} {b} = {a - b}")
elif o == "*":
print(f"{a} {o} {b} = {a * b}")
elif o == "/":
print(f"{a} {o} {b} = {a / b}")
elif o == "%":
print(f"{a} {o} {b} = {a % b}")
# 문제2) 1~100중에서 짝수의 합, 홀수의 합을 각각 구하시오
even = 0 #짝수의 합
odd = 0 #홀수의 합
for i in range(1, 101, 2):
odd += i
even += i + 1
# switch 이론
# -> 짝수/홀수, Yes/No, On/Off, True/False
even = 0
odd = 0
flag = False
i = 1
while i <= 100:
if flag :
flag = False
even += i
else:
flag = True
odd += i
i += 1
print(f"짝수의 합: {even}")
print(f"홀수의 합: {odd}")
# 문제3) 운행거리에 따라 택시 요금을 계산하는 프로그램
# 2000m까지는 기본요금 900원이고
# 2000m초과 운행시 200m단위마다 기본요금에 100원씩 가산하여 요금을 계산한다
"""
예1) 운행거리 1600 -> 기본요금 : 900
예2) 운행거리 3000 -> 1000초과 (기본요금 900 + 추가 500 = 1400)
예3) 운행거리 2900 -> 900초과 (기본요금 900 + 추가 500 = 1400)
"""
import math
distance = 2900
charge = 900
if distance > 2000:
diff = distance - 2000
add = math.ceil(diff / 200) * 100
charge += add
print(f"택시 요금은 {charge}원입니다")
문자열 처리
# 문자열 관련 함수
str = "Life is too short. You need Python"
print(str)
# 글자 개수
print(len(str)) # 34
print(str.count('i')) # 2
print(str.count('a')) # 0
print(str.count('short')) # 1
print(str.count('nice')) # 0
print(str[3]) # e
print(str[0]) # L 문자열의 인덱스는 0부터 시작
print(str[-1]) # n -1은 마지막 글자
print(str[-3]) # h
# 특정 글자나 단어가 마지막으로 등장하는 위치 조회
print(str.rfind("i")) # 5
print(str.rfind("a")) # -1 찾고자 하는 문자열이 없을 때
print(str.rfind("short")) # 12
print(str.rfind("nice")) # -1
# 특정 글자나 단어가 처음 등장하는 위치 조회
print(str.index("short")) # 12
# print(str.index("nice")) # 에러 ValueError: substring not found
# 특정 단어나 글자로 시작하는지 여부 검사(True,False)
print(str.startswith("L")) # True
print(str.startswith("l")) # False
print(str.startswith("Life")) # True
print(str.startswith("H")) # False
print(str.startswith("Hello")) # False
# 특정 단어나 글자로 끝나는지 여부(True,False)
print(str.endswith("N"))
print(str.endswith("n"))
print(str.endswith("Python"))
print(str.endswith("python"))
print(str.upper()) #전부 대문자로 변경 LIFE IS TOO SHORT. YOU NEED PYTHON
print(str.lower()) #전부 소문자로 변경 life is too short. you need python
print(str.swapcase()) #대소문자 서로 바꿔서 lIFE IS TOO SHORT. yOU NEED pYTHON
print(str.capitalize()) #문장의 첫글자만 대문자로 Life is too short. you need python
print(str.title()) #각 단어의 첫글자 대문자 Life Is Too Short. You Need Python
# 글자 치환 My height is too short. You need Python
print(str.replace("Life", "My height"))
# 공백제거
k = " py th on "
print("#" + k.lstrip() + "#") #py th on #
print("#" + k.rstrip() + "#") # py th on#
print("#" + k.strip() + "#") #py th on#
# 문제) str변수의 문자열값에서 공백을 모두 제거하시오
print(str.strip().replace(' ', ''))
print(len(" ")) # 1
print(len("")) # 0
# 문자열의 인덱싱 - 특정 위치의 글자를 추출
print(str[0]) #0번째문자 인덱스(순서)는 0부터 시작
print(str[3]) #3번째문자
print(str[-3]) #문자열 뒤에서 부터 시작
print(str[-1]) #문자열 맨 마지막 글자
# 문자열의 슬라이싱 - 특정 범위의 글자들을 추출
print("#" + str[0:3] + "#") #Lif# 0번째부터 (3-1)까지
print("#" + str[5:7] + "#") #is#
print("#" + str[19:] + "#") #You need Python# 19번째부터 마지막 까지
print("#" + str[:17] + "#") #Life is too short# 0번째부터 (17-1)까지
print("#" + str + "#") #Life is too short. You need Python#
print("#" + str[:] + "#") #Life is too short. You need Python#
print("#" + str[19:-7] + "#") #You need#
a = ","
print(a.join("PYTHON")) #P,Y,T,H,O,N
#########################################################################
# 문제)주민번호에서 문자열 추출
# 출력결과
# -> 출생년도 : 1989년
# -> 출생월 : 12월
# -> 출생일 : 03일
# -> 성별코드 : 2
jumin = "8912032"
print(f"출생년도 : {('19' if int(jumin[6:]) < 3 else '20') + jumin[:2]}년")
print(f"출생월 : {jumin[2:4]}월")
print(f"출생일 : {jumin[4:6]}일")
print(f"성별코드 : {jumin[6:]}")
# 성별 코드에 따라 성별을 출력하시오
code = int(jumin[6:])
if code == 1 or code == 3:
print("남자")
elif code == 2 or code == 4:
print("여자")
컬렉션
- 연속형 자료형
- 하나의 변수에 여러 개의 값을 저장하는 형태
- List, Tuple, Dictionary, Set, DataFrame, Series
- Element, 요소, 원소
- Index, 색인, 순서 (대부분 0부터 시작해서 1씩 증가한다)
- DataFrame + Series 은 pandas 모듈 설치해야 함
명령프롬프트> pip install pandas
List
# 1. List
## 1) 1차원 리스트
grade = [90, 85, 73, 64, 100]
print(grade) # [90, 85, 73, 64, 100]
print(type(grade)) # <class 'list'>
print(grade[0])
print(grade[1])
print(grade[2])
print(grade[3])
print(grade[4])
print(len(grade)) # 5 요소의 개수
for idx in range(len(grade)):
print(grade[idx])
names = ["홍길동", "무궁화", "개나리", "진달래", "라일락"]
print(names)
print(type(names))
for name in names:
print(name)
num = [5, 8, -1, 9, -6]
size = len(num)
# 문제 1) 음수의 개수를 구하시요
cntNegative = 0
for n in num:
if n < 0:
cntNegative += 1
print(cntNegative)
# 문제 2) 양수 중에서 홀수의 합을 구하시오
sumOfOdd = 0
for n in num:
if n > 0 and n % 2 == 1:
sumOfOdd += n
print(sumOfOdd)
# 문제 3) num[4]의 등수를 구하시오
rank = 1
target = num[4]
for n in num:
if target < n:
rank += 1
print(f'{target} : {rank}등')
########################################################
## 2) 2차원 리스트
## -> 행(row)과 열(col)로 구성
students = [
["joy", 20],
["kiara", 30],
["tom", 40],
] # 3행 2열
print(students) # [['joy', 20], ['kiara', 30], ['tom', 40]]
print(type(students)) # <class 'list'>
# 행 전체
print(students[0]) # ['joy', 20]
print(students[1]) # ['kiara', 30]
print(students[2]) # ['tom', 40]
# 각 요소 값 [행][열]
print(students[0][0]) # joy
print(students[0][1]) # 20
for y in students:
for x in y:
print(x)
print(len(students)) # 3 -> 행의 개수
print(len(students[0])) # 2 -> 0행의 열의 개수
print(len(students[1])) # 2 -> 1행의 열의 개수
print(len(students[2])) # 2 -> 2행의 열의 개수
row = len(students) # 3
for r in range(row): # 0~2
col = len(students[r])
for c in range(col):
print(students[r][c])
# print(students[3][3]) # 에러 IndexError: list index out of range
# 3행 3열은 존재하지 않음
######################################################################
## 3) 리스트 관련 함수
## -> 리스트의 인덱싱, 슬라이싱
mylist = [10, 20, 30, 40, 50]
for m in mylist: # for 요소값 in 덩어리
print(m)
print(mylist[1:3]) # [20, 30]
print(mylist[1:-2]) # [20, 30]
mylist.append(60) # 맨뒤 요소 추가
print(mylist) # [10, 20, 30, 40, 50, 60]
mylist.insert(1, 30) # 1번째 요소로 30 삽입
print(mylist) # [10, 30, 20, 30, 40, 50, 60]
print(mylist.count(30)) # 2 30값의 개수
mylist.pop() # 마지막 요소 삭제
print(mylist) # [10, 30, 20, 30, 40, 50]
x = mylist.index(30)
print(x) # 1
mylist.remove(30)
print(mylist) # [10, 20, 30, 40, 50]
score = [9, 3, 5, 1, 7]
score.reverse() # 순서 뒤집기
print(score) # [7, 1, 5, 3, 9]
score.sort() # 오름차순 정렬 Ascending Sort (1->9, A->Z, a->z, ㄱ->ㅎ)
print(score) # [1, 3, 5, 7, 9]
score.sort(reverse=True) # 내림차순 정렬 Descending Sort
print(score) # [9, 7, 5, 3, 1]
str = "Gone,With,The,Wind"
word = str.split(',')
print(word) # ['Gone', 'With', 'The', 'Wind']
print(type(word)) # <class 'list'>
for w in word:
print(w)
Tuple
# 2. Tuple
# 리스트와 기본적으로 동일하지만, 처음 할당한 요소의 값을 수정할 수 없다
grade = (12, 13, 14, 15, 16)
print(grade) # (12, 13, 14, 15, 16)
print(grade[0]) # 12
# print(grade(0)) # 에러 TypeError: 'tuple' object is not callable
names = ("홍길동", "무궁화", "진달래", "개나리", "라일락")
print(names)
stud1 = ("봉선화", 90)
print(stud1) # ('봉선화', 90)
print(stud1[0]) # 봉선화
print(stud1[1]) # 90
# stud1[0] = "코리아" # 에러 TypeError: 'tuple' object does not support item assignment
Python Tutorial
https://www.w3schools.com/python/default.asp
Jupyter
설치
pip install jupyter
실행
jupyter notebook


요일 구하기
서기 1년 1월 1일 ~ 2025년 9월 30일 까지의 총 일수: ?????? % 7 구하기
나머지 0 일, 1 월, 2 화, 3 수, 4 목, 5 금, 6 토
# 변수 선언하기
cYear = 2025
cMonth = 9
cDate = 30
hap = 0 # 총 일수
1단계
서기 1년 ~ 2024년
평년이면 += 365
윤년이면 += 366
# 1단계
for year in range(1, cYear):
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
hap += 366
else:
hap += 365
print(hap)
2단계
1월 ~ 8월
31일 : 1, 3, 5, 7, 8, 10, 12
30일 : 4, 6, 9, 11
29일 : 2 => 윤년
28일 : 2 => 평년
# 2단계
dal = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (cYear % 4 == 0 and cYear % 100 != 0) or cYear % 400 == 0:
dal[2] = 29
for month in range(1, cMonth):
hap += dal[month]
3단계
일수(30) 더하기
# 3단계
hap += cDate # 739524
요일 구하기
day = ('일', '월', '화', '수', '목', '금', '토')
d = hap % 7 # 2
print(day[d]) # 화'Courses > 아이티윌 오라클 DBA 과정' 카테고리의 다른 글
| 251010 TIL (0) | 2025.10.10 |
|---|---|
| 251002 TIL (0) | 2025.10.02 |
| 251001 TIL (0) | 2025.10.01 |
| 250929 TIL (0) | 2025.09.29 |
| 250926 TIL (0) | 2025.09.26 |