<내용정리>
- 관련 파일
- 본문
### 시퀀스 내장 함수
## enumerate()
<형식>
for 인덱스번호 , 값 in enumerate(리스트명):
수행할 코드
a = [10, 20, 30]
for i in a:
print(i)
for item in enumerate(a):
print(item) # 결과는 튜플형식
for index, value in enumerate(a):
print(f'{index}번째 : {value}')
for i, v in enumerate(a, start=1): # 인덱스 시작번호를 1로 정함
print(f'{i}번째 : {v}')
# len() : 길이(항목 수)
li = ['a', 'b', 'c', 'd']
print(len(li))
ch = 'Hello'
print(len(ch))
d = {'a':'apple', 'b':'banana'}
print(len(d))
print(len(range(10))) # 0부터 9까지 10개
print(len(range(1, 10))) # 1부터 9까지 9개
# ex) 총점과 평균 구하기
score = [70, 60, 55, 75, 95]
total = 0
for i, v in enumerate(score, start = 1):
print(f'{i}번째 학생점수 : {v}')
total += v
print('총점 : ', total)
avg = total / len(score) # 리스트 개수로 나누어서 평균을 구한다
print('평균 : ', avg)
# sorted() : 정렬
my_list = [6, 3, 1, 2, 5, 4]
sorted_list = sorted(my_list)
reverse_list = sorted(my_list, reverse=True)
print('원본: ', my_list)
print('오름차순: ', sorted_list)
print('내림차순: ', reverse_list)
# zip() : 튜플로 묶기
names = ['james', 'emily', 'amanda']
scores = [60, 70, 80]
for student in zip(names, scores):
print(student)
for name, score in zip(names, scores):
print(f'{name}의 점수는 {score}점입니다')
months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
for month, day in enumerate(months):
print(f'{month+1}월 = {day}일')
### 메소드
## 문자열 메소드
# count() : 특정 문자열의 개수
s = '내가 그린 기린 그림은 목 긴 기린 그림이고, 네가 그린 기린 그림은 목 짧은 기린 그림이다'
print(s.count('기린'))
a = 'best of best'
print(a.count('best'))
print(a.count('best', 5))
print(a.count('best', -7))
# find(), index() : 특정 문자열의 위치를 반환해준다
b = 'apple'
print(b.find('p')) # 해당 인덱스 번호를 출력해준다
print(b.find('z')) # -1 == False(없는 경우)
print(a.find('best'))
print(a.find('best', 5))
print(b.index('p'))
print(b.index('z')) # error
# 대소문자 변환 메소드
s = 'BEST of best'
print(s.upper())
print(s.lower())
print(s.capitalize())
# join() : 합치기
a = '-'.join('python')
print(a)
b = '+'.join(['a', 'b', 'c', 'd'])
print(b)
c = ''.join(['x', 'y', 'z'])
print(c)
d = ''.join({'a':'apple', 'b':'banana'}) # key만 사용
print(d)
# split() : 나누기(리스트 형식으로)
a = 'Life is too short'
print(a.split()) # 공백을 기준으로 분리
b = '010-1234-5678'
print(b.split('-')) # -을 기준으로 분리
c = '제임스,25,남,서울'
print(c.split(',')) # ,를 기준으로 분리
# replace() : 바꾸기
print(a.replace('Life', 'Leg'))
print(b.replace('-', ''))
# strip() : 불필요한 문자열을 제거
a = ' apple'
print(a)
print(len(a))
b = a.lstrip() # 왼쪽 공백 제거, rstrip : 오른쪽 공백 제거
print(b)
print(len(b))
c = '<head>'
print(c.strip('>, <'))
while True:
p = input('하이픈을 포함하여 전체 주민등록번호를 입력하세요 : ')
if p.find('-') != 6 or len(p) != 14:
print('잘못 입력하셨습니다')
continue
bd = p.split('-')[0]
print(f'생년월일은 {bd}입니다')
break
## 리스트 메소드
# extend() : 확장
my_list = ['apple', 'banana']
my_list.extend(['cherry', 'mango'])
print(my_list)
# remove() : 특정 값 제거
my_list.remove('mango')
print(my_list)
# clear() : 모든 값 삭제
my_list.clear()
print(my_list)
a_list = ['above', 'cookie', 'app', 'about', 'admin', 'bisket', 'apple', 'april']
for i, item in enumerate(a_list):
if item.find('a') == -1: # a가 없는 값은 -1로 반환되므로
print(f'{a_list.pop(i)}가 제거됩니다') # i번째 값을 꺼내어 삭제한다
print(a_list)
## 세트 메소드
s1 = {1, 2, 3, 4, 5, 6}
s2 = {4, 5, 6, 7, 8, 9}
print('세트 s1 : ', s1)
print('세트 s2 : ', s2)
# 교집합
print('교집합 : ', s1 & s2)
print('교집합 : ', s1.intersection(s2))
# 합집합
print('합집합 : ', s1 | s2)
print('합집합 : ', s1.union(s2))
# 차집합
print('차집합 : ', s1 - s2)
print('차집합 : ', s1.difference(s2))
- 문제 및 정답
# 함수
'''
[문제] 사칙 연산 함수 만들기
숫자 두개로 덧셈, 뺄셈, 곱셈, 나눗셈의 결과가 나오도록 하시오.
(단, 각각의 연산은 함수를 이용해서 만들것)
예) 덧셈코드
def add(x, y):
덧셈 계산 코드 넣기
나머지 계산코드도 이런식으로 만들기
[출력결과] (매개변수 x를 10으로, 매개변수 y를 20으로 한 결과)
30
-10
200
0.5
[정답1]
def add(x, y):
return x + y
def sub(x, y):
return x - y
def mul(x, y):
return x * y
def div(x, y):
return x / y
a = add(10, 20)
b = sub(10, 20)
c = mul(10, 20)
d = div(10, 20)
print(a, b, c, d, sep='\n')
[정답2]
def add(x, y):
print(x + y)
def sub(x, y):
print(x - y)
def mul(x, y):
print(x * y)
def div(x, y):
print(x / y)
x = 10
y = 20
add(x, y)
sub(x, y)
mul(x, y)
div(x, y)
[정답3]
def add(x, y):
print(x + y)
def sub(x, y):
print(x - y)
def mul(x, y):
print(x * y)
def div(x, y):
print(x / y)
add(10, 20)
sub(10, 20)
mul(10, 20)
div(10, 20)
'''
'''
[문제]
회원등급에 따른 할인율 계산하여 출력하기
매개변수가 2개인(회원등급, 가격)
하나의 함수로 만들어보기
'S' --> 할인율 5%
'G' --> 할인율 10%
'V' --> 할인율 15%
[출력결과]
회원 등급을 입력하세요 : V
가격을 입력하세요 : 20000
3000 원입니다.
[정답]
grade = input('회원 등급을 입력하세요 : ')
price = int(input('가격을 입력하세요 : '))
def solution(grade, price):
answer = 0
if grade == 'S':
answer = int(price * 0.05)
elif grade == 'G':
answer = int(price * 0.1)
elif grade == 'V':
answer = int(price * 0.15)
else:
print('할인율이 없습니다')
return answer
print(solution(grade, price),'원입니다.')
'''
'''
[문제]
아래의 출력결과와 같이 이름을 받아서 생일 축하 노래를 출력하는 함수 happyBirthday()를 만들고 호출하여 실행해보시오.
[출력결과]
Happy Birthday to you!
Happy Birthday to you!
Happy Birthday, dear 홍길동
Happy Birthday to you!
Happy Birthday to you!
Happy Birthday to you!
Happy Birthday, dear 라이언
Happy Birthday to you!
[정답]
def happyBirthday(person):
print('Happy Birthday to you!')
print('Happy Birthday to you!')
print('Happy Birthday, dear', person)
print('Happy Birthday to you!')
print()
happyBirthday('홍길동')
happyBirthday('라이언')
'''
'''
[문제]
원주율을 나타내는 변수 PI = 3.14를 만들고, 반지름을 입력 받은 후
원의 면적을 계산하는 함수, 원의 둘레를 계산하는 함수를 호출하여 실행시켜 보시오.
[출력결과]
반지름을 입력하세요 : 5
반지름 5의 원의 넓이는 78.5이고,
원의 둘레는 31.400000000000002입니다.
[정답]
PI = 3.14 # 전역변수
def area(r):
return PI * r * r
def cir(r):
return PI * 2 * r
r = int(input('반지름을 입력하세요 : '))
area_result = area(r)
cir_result = cir(r)
print(f'반지름 {r}의 원의 넓이는 {area_result}이고,')
print(f'원의 둘레는 {cir_result}입니다.')
'''
'학부 자료 > Python' 카테고리의 다른 글
[Python] 파이썬 기초 10/20, 람다 표현식(lambda expression) (0) | 2023.11.07 |
---|---|
[Python] 파이썬 기초 9/20, 사용자 함수 (1) | 2023.11.07 |
[Python] 파이썬 기초 7/20, 조건문 반복문 3, 리스트 내포(리스트 컴프리헨션), 내장함수 (0) | 2023.11.07 |
[Python] 파이썬 기초 6/20, 조건문 반복문 2 (0) | 2023.11.07 |
[Python] 파이썬 기초 5/20, 조건문 반복문 1 (0) | 2023.11.07 |