데이터분석 3주차-2

이정훈·2023년 2월 16일
0

자료구조

6강 리스트와 for문(2)
for문을 이용한 조회

# minScore = 60
#
# scores = [['국어',58],['영어',77],['수학',89],['과학',99],['국사',50]]
#
# for item in scores:
#     if item[1] < minScore:
#         print(f'{item[0]}과목은 {item[1]}점수 이므로 과락 입니다.')
#

#사용자가 국어,영어,수학,과학,국사 점수를 입력하면 과락 과목과 점수를 출력하는 프로그램을 만들어보자

minScore = 60

korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))
sciScore = int(input('과학 점수 : '))
hisScore = int(input('국사 점수 : '))

scores = [['국어',korScore],['영어',engScore]
        ,['수학',matScore],['과학',sciScore],['국사',hisScore]]

for item in scores:
    if item[1] < minScore:
        print(f'{item[0]}과목은 {item[1]}점수로 과락입니다.')

7강 리스트와 while문(1)
while문을 이용하면 다양한 방법으로 아이템 조회가 가능하다.

#리스트를 이용해서 학급별 학생 수와 전체 학생 수 그리고 평균 학생수를 출력해보자 (while문으로)

studentCnts = [[1,18],[2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]

sum = 0
n = 0
while n < len(studentCnts):
    classNo = studentCnts[n][0]
    cnt = studentCnts[n][1]
    print(f'{classNo}학급 학생수 : {cnt}명')

    sum += cnt
    n += 1

print(f'전체 학생 수 : {sum}명')
print(f'평균 학생 수 : {sum/len(studentCnts)}명')

8강 리스트와 while문(2)
for문을 이용한 조회 조건문과 함께 사용

#while 문을 이용해서 학급 학생 수 가 가장 작은 학급과 가장 많은 학급을 출력해보자

studentCnts = [[1,18],[2,19],[3,23],[4,21],[5,20],[6,22],[7,17]]


minclassNo = 0; maxclassNo = 0
minCnt = 0; maxCnt = 0

n=0
while n < len(studentCnts):

    if minCnt == 0 or minCnt > studentCnts[n][1]:
        minCnt = studentCnts[n][1]
        minclassNo = studentCnts[n][0]

    if maxCnt < studentCnts[n][1]:
        maxCnt = studentCnts[n][1]
        maxclassNo = studentCnts[n][0]

    n += 1

print('학생 수가 가장 적은 학급(학생수) : {}학급({}명)'.format(minclassNo,minCnt))
print('학생 수가 가장 많은 학급(학생수) : {}학급({}명)'.format(maxclassNo,maxCnt))

9강 enumerate()함수
인덱스와 아이템을 한번에 조회하자!
enumerate()함수를 이용하면 아이템을 열거 할 수 있다.
enumerate()는 문자열에도 사용 할 수 있다.

sports = ['농구','수구','축구','마라톤','테니스']

#기존
for i in range(len(sports)):
    print(f'{i} : {sports[i]}')
#enumerate 함수 이용
for idx , value in enumerate(sports):
    print(f'{idx} : {value}')
#문자열에도 사용가능
str = 'Hello python.'
for idx , value in enumerate(str):
    print(f'{idx} : {value}')

#실습 가장 좋아하는 스포츠가 몇 번 째에 있는지 출력하는 프로그램을 만들어보자.
sports = ['농구','수구','축구','마라톤','테니스']
favoriteSport = input('가장 좋아하는 스포츠 입력 : ')

bestSportIdx = 0
for idx , value in enumerate(sports):
    if value == favoriteSport:
        bestSportIdx = idx + 1

print( '{}은(는) {}번째에 있습니다.'.format(favoriteSport,bestSportIdx))

#실습 사용자가 입력한 문자열에서 공백의 개수를 출력해보자
message = input('메세지 입력 : ')
cnt = 0
for idx ,value in enumerate(message):
    print(idx,value)
    if value ==' ':
        cnt +=1

print(f'공백 개수 : {cnt}')
print(f'공백을 제외한 글자수 : {idx-cnt+1}')

10강 리스트에 아이템 추가
리스트에 아이템을 추가하자.
append()함수를 이용하면 마지막 인덱스에 아이템을 추가 할 수 있다.

students = ['홍길동','박찬호','이용규','박승철','김지은']

print('students : {}'.format(students))
print('students length : {}'.format(len(students)))
print('last index : {}'.format(len(students)-1))

students.append('강호동')
print('students : {}'.format(students))
print('students length : {}'.format(len(students)))
print('last index : {}'.format(len(students)-1))

scores = [['국어',88],['영어',91],['수학',100],['사회',87],['과학',80]]

print('scores : {}'.format(scores))
print('scores length : {}'.format(len(scores)))
print('last index : {}'.format(len(scores)-1))
for subject , score in scores:
    print('과목 : {} \t 점수 : {}'.format(subject,score))

#실습 가족구성원의 나이가 있을때 새로 태어난 동생을 리스트에 추가해보자.
myFamliy = [['아빠',40],['엄마',38],['나',9]]
print(myFamliy)

myFamliy.append(['동생',1])
print(myFamliy)
for name,age in myFamliy:
    print(' {} : {}'.format(name,age))

11강 리스트의 특정 위치에 아이템 추가
insert() 함수를 이용하면 특정 위치(인덱스)에 아이템을 추가 할 수 있다.
insert(인덱스위치,'아이템')

#오름차순으로 정렬 되어있는 숫자들에 사용자가 입력한 정수를 추가하는 프로그램을 만들어보자!

numbers = [1,3,6,11,45,54,62,74,85]
inputNumber = int(input('숫자 입력 : '))
insertIdx = 0
for idx , number in enumerate(numbers):
    print(idx , number)

    if insertIdx == 0 and inputNumber < number:
        insertIdx = idx
    print(insertIdx)
numbers.insert(insertIdx , inputNumber)
print(numbers)

12강 리스트의 아이템 삭제
마지막 인덱스 아이템 삭제 pop()함수를 이용하면 마지막 인덱스에 해당하는
아이템을 삭제 할 수 있다.
pop(n) n인덱스에 해당하는 아이템을 삭제 할 수 있다.

#실습 점수표에서 최저, 최고 점수를 삭세하는 프로그램을 작성해 보자.

playerScores = [9.5, 8.9, 9.2, 9.8, 8.8, 9.0]
print('playerScores : {}'.format(playerScores))

minScore = 0; maxScore = 0
minScoreIdx = 0; maxScoreIdx = 0

for idx, score in enumerate(playerScores):
    if idx  == 0 or minScore > score:
        minScoreIdx = idx
        minScore = score

print('minScore : {} , minScoreIdx : {}'.format(minScore,minScoreIdx))
playerScores.pop(minScoreIdx)
for idx, score in enumerate(playerScores):
    if  maxScore < score:
        maxScoreIdx = idx
        maxScore = score

print('maxScore : {} , maxScoreIdx : {}'.format(maxScore,maxScoreIdx))
playerScores.pop(maxScoreIdx)

print('playerScores : {}'.format(playerScores))

13강 리스트의 특정 아이템 삭제
remove()함수를 이용하면 특정 아이템을 삭제 할 수 있다.
remove()는 한 개의 아이템만 삭제 가능하다. 만약 삭제하려는 데이터가 2개 이상이라면
while문을 이용하자.

#과목표에서 사용자가 입력한 과목을 삭제하는 프로그램을 만들어 보자.

subjects = ['국어','영어','수학','과학','국사']
print ('시험 과목표 : {}'.format(subjects))

removeSubject = input('삭제할 과목명 입력 : ')
while removeSubject in subjects:
    subjects.remove(removeSubject)

print('시험 과목 표 : {}'.format(subjects))
profile
데이터 분석 준비생

0개의 댓글