1. TIL(Today I Learned)란?
매일 내가 공부한 것을 정리하는 것이다.
내가 공부한 것들 중에 내가 몰랐던 것을 배운 것 위주로 정리할 예정이다!
2. 새롭게 알게된 것
1일차에는 자료형, 반복문, 리스트, 튜플 등 파이썬의 기본이 되는 내용을 배웠다.
그 중에서도 리스트를 다룰 때 사용하는 메서드들을 정확하게 인지하고자 오늘의 TIL에 정리한다.
2.1 구분자, 끝문자 지정
- 구분자 : sep = ' '
- 끝문자 : end = ' '
# 구분자
print('hello', 'python', sep = ',')
[out] hello,python
# 끝문자
print('안녕하세요', end = '!!')
print('반갑습니다', end = '!!')
[out] 안녕하세요!!반갑습니다!!
2.2 f스트링
name = input('이름:')
print(f'{name}님, 안녕하세요?')
[out] 아람님, 안녕하세요?
2.3 문자열 함수
- 문자열 교체하기 : .replace(찾을문자열, 교체할문자열)
- 문자의 위치 찾기 : .find(문자)
- 소문자로 변환하기 : .lower()
- 대문자로 변환하기 : .upper()
- 문자열 나누기 : .split(구분자)
2.4 알고리즘 실습
1~100 사이의 정답 숫자를 랜덤으로 하나 정하고, 정답 숫자를 맞출 때까지 숫자를 입력하는 게임이다.
내가 입력한 숫자가 정답보다 작으면 'DOWN', 정답보다 크면 'UP'을 출력하고 숫자를 다시 입력받는다.
정답을 맞추면 '정답!'이라고 출력하고 게임을 끝낸다.
단, 기회는 5번까지만 주어지며 5회가 넘으면 '횟수초과' 메시지와 함께 정답을 알려준다. 정답을 맞추면 몇번째에 맞추었는지 출력한다.
# 횟수
cnt = 0
# 정답 숫자
num = random.randrange(1, 101)
print(num)
# 게임 프로그램 (기회 제한)
while True:
cnt += 1 # 횟수 세기
# 횟수가 6회 이상일 경우
if cnt > 5:
print('횟수초과 : 정답은 ', num)
break
# 횟수가 5회 이하일 경우
answer = int(input('예상 숫자 : '))
if answer > num:
print('UP')
elif answer < num:
print('DOWN')
else:
print('정답')
print(cnt, '번만에 맞추었습니다.')
break
93
예상 숫자 : 90
DOWN
예상 숫자 : 100
UP
예상 숫자 : 1
DOWN
예상 숫자 : 2
DOWN
예상 숫자 : 3
DOWN
횟수초과 : 정답은 93
2.5 리스트 변경하기
- 리스트 끝에 항목 추가하기 → 리스트명.append(항목)
todolist = ['양치','물마시기']
todolist.append('아침운동')
todolist
[out] ['양치', '물마시기', '아침운동']
- 리스트 중간에 항목 삽입하기 → 리스트명.insert(인덱스, 항목)
todolist = ['양치', '물마시기', '아침운동']
todolist.insert(2, '아침식사') # 2번째 인덱스(순서상 3번째)에 '아침식사' 항목 삽입
todolist
[out] ['양치', '물마시기', '아침식사', '아침운동']
- 리스트 끝에 여러 항목 추가하기 → 리스트명.extend(리스트)
todolist = ['양치', '물마시기', '아침식사', '아침운동']
todolist.extend(['샤워','드라이','공부'])
todolist
[out] ['양치', '물마시기', '아침식사', '아침운동', '샤워', '드라이', '공부']
2.6 리스트 수정하기
- 하나의 항목 수정 → 리스트명[인덱스] = 항목
todolist = ['양치', '물마시기', '아침식사', '아침운동', '샤워', '드라이', '공부']
todolist[3] = '산책' # 3번째 인덱스(순서상 4번째) 항목 수정 (아침운동 → 산책)
todolist
[out] ['양치', '물마시기', '아침식사', '산책', '샤워', '드라이', '공부']
- 여러 항목 수정 → 리스트명[시작 인덱스 : 끝 인덱스] = 리스트
todolist = ['양치', '물마시기', '아침식사', '산책', '샤워', '드라이', '공부']
# '아침식사', '산책' → '독서','산책','아침식사' 변경
# 갯수가 달라도 수정 가능
todolist[2:4] = ['독서','산책','아침식사']
todolist
[out] ['양치', '물마시기', '독서', '산책', '아침식사', '샤워', '드라이', '공부']
2.7 리스트 항목 삭제하기
- 인덱스 이용 → del 리스트명[인덱스]
todolist = ['양치', '물마시기', '독서', '산책', '아침식사', '샤워', '드라이', '공부']
del todolist[-1] # 마지막 항목 '드라이' 제거
todolist
[out] ['양치', '물마시기', '독서', '산책', '아침식사', '샤워', '드라이']
- 항목값 이용 → 리스트.remove(항목)
중복된 항목이 여러개인 경우 앞쪽에 있는 인덱스만 삭제됨
todolist = ['양치', '물마시기', '독서', '산책', '아침식사', '샤워', '드라이']
todolist.remove('양치')
todolist
[out] ['물마시기', '독서', '산책', '아침식사', '샤워', '드라이']
- 마지막 항목 반환 및 삭제 → 리스트.pop()
todolist = ['물마시기', '독서', '산책', '아침식사', '샤워', '드라이']
a = todolist.pop()
a
[out] '드라이'
todolist
[out] ['물마시기', '독서', '산책', '아침식사', '샤워']
2.8 리스트 정렬하기
- 리스트명.sort() → 기존의 리스트를 수정하는 방식
friends = ['수지','지은','찬혁','수현','범준']
friends.sort()
friends
[out] ['범준', '수지', '수현', '지은', '찬혁']
[+] 내림차순 정렬 → (reverse = True)
friends.sort(reverse = True)
friends
[out] ['찬혁', '지은', '수현', '수지', '범준']
- sorted(리스트명) → 리스트 복사본을 만들어서 정렬
friends = ['수지','지은','찬혁','수현','범준']
sorted_friends = sorted(friends)
sorted_friends
[out] ['범준', '수지', '수현', '지은', '찬혁']
# 기존 리스트는 변경되지 않음
friends
[out] ['수지','지은','찬혁','수현','범준']
[+] 내림차순 정렬 → (reverse = True)
reversed = sorted(friends, reverse = True)
reversed
[out] ['찬혁', '지은', '수현', '수지', '범준']
- 리스트 순서 뒤집기 → 리스트명.reverse()
friends = ['수지','지은','찬혁','수현','범준']
friends.reverse()
friends
[out] ['범준', '수현', '찬혁', '지은', '수지']
2.9 리스트 연습 문제
1) 학생 별 총점, 평균 구하기
다음은 학생 별 [국어,영어,수학]점수가 저장된 리스트이다.
각 학생의 세 과목의 성적의 [총점, 평균]을 구하여 리스트에 담으시오. (평균은 반올림하여 소수점 1자리까지 표현한다.)
score_list = [[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
stu_scores = []
or i in score_list:
total = sum(i) # 각 학생 별 점수 총합
avg = round(total / 3, 1) # 각 학생 별 평균 구하기
stu_scores.append([total, avg]) # 총합, 평균 데이터 추가
stu_scores
[out] [[260, 86.7], [258, 86.0], [254, 84.7], [254, 84.7], [257, 85.7]]
2) 과목 별 평균 구하기
다음은 학생 별 [국어,영어,수학]점수가 저장된 리스트이다.
각 과목의 리스트를 분리하고 과목별 평균을 구해봅시다. 평균은 소수점 1자리까지 출력한다.
score_list = [[96,84,80],[96,86,76],[76,95,83],[89,96,69],[90,76,91]]
kor = []
eng = []
math = []
# 1. 각 과목의 리스트 분리하기
for i in score_list:
kor.append(i[0])
eng.append(i[1])
math.append(i[2])
# 2. 과목별 평균 구하기
kor_avg = round(sum(kor) / len(kor), 1)
eng_avg = round(sum(eng) / len(eng), 1)
math_avg = round(sum(math) / len(math), 1)
# 3. 평균 출력
print(f'''
국어 평균 : {kor_avg},
영어 평균 : {eng_avg},
수학 평균 : {math_avg}
''')
[out]
국어 평균 : 89.4,
영어 평균 : 87.4,
수학 평균 : 79.8
3) 랜덤 항목 추출하기
- random.choice(리스트명)
메뉴를 입력받아 랜덤으로 메뉴를 정하는 프로그램을 작성해보자. 공백('')을 입력할 때까지 메뉴를 입력받는다.
menu_list = []
while True:
menu = input('메뉴 : ')
if menu == '':
break
menu_list.append(menu)
print('오늘의 메뉴는 ', random.choice(menu_list))
[out]
메뉴 : 돈까스
메뉴 : 치킨
메뉴 : 떡볶이
메뉴 : 텐동
메뉴 :
오늘의 메뉴는 떡볶이
3. 회고
예전에 아이펠 부트캠프, 이후 프로젝트를 진행하면서 배웠던 파이썬의 기초를 다시 공부하는 시간이었다.
많은 내용을 알긴 했지만 여전히 헷갈리거나 모르는 부분이 있어서 이 부분을 다시 상기시키고자 정리했다. 매번 사용할 때마다 구글링했던 부분인데, 이번 공부로부터 머리에 잘 집어넣자! :)
'웅진X유데미 STARTERS > TIL (Today I Learned)' 카테고리의 다른 글
[스타터스 TIL] 5일차.파이썬 데이터 시각화 (2) - 그래프 종류 (0) | 2023.02.11 |
---|---|
[스타터스 TIL] 4일차.파이썬 데이터 시각화 (1) - 기본 그래프 (0) | 2023.02.10 |
[스타터스 TIL] 4일차.파이썬 데이터 분석 (4) - 분석 실습, value_counts, groupby (0) | 2023.02.09 |
[스타터스 TIL] 3일차.파이썬 데이터 분석 (3) - 판다스, 데이터프레임 (0) | 2023.02.09 |
[스타터스 TIL] 2일차.파이썬 데이터 분석 (2) - 딕셔너리, 함수, 클래스 (0) | 2023.02.08 |