SOCO
append, split, sorted, items 등 본문
# 코딩테스트 대회가 개최되었습니다. 이 때, 참여자들 이름을 공백을 통해 구분을 하여 입력을 합니다.
# 예) "홍길동" "김길동" "최길동"
# 그 후 코딩테스트에서 순차대로 각 대회에서 맞춘 문제를 공백을 통해 구분하여 입력이 됩니다.
# 예) 2 10 4
# 만약 중간에 기권을 했을 경우 '기권'이라고 입력이 됩니다.
# 예) 2 10 기권
# 이 때 기권을 하지 않은 학생들의 성적의 평균을 넘긴 학생들만은 참가상을 모두 받을 수 있습니다.
# 참가상을 받은 학생들을 푼 점수가 높은 순서대로 공백으로 구분하여 출력해 주세요
names = input().split(' ')
#print("참가자", names)
scores = input().split(' ')
#print("점수", sores)
score = {}
for i in range(len(scores)):
s = scores[i]
if s!='기권':
score[names[i]] = int(s)
#print("기권 아닌 사람들 딕셔너리", score)
ans = sorted(score.items(), key=lambda x: x[1], reverse=True)
print("리스트를 정렬",ans)
avg = sum(score.values())/len(score.values())
print("평균", avg)
for i in ans:
print("이름, 점수", i)
if i[1]<avg:
break
else:
print(i[0], end=' ')
1. split
문자열을 구분자를 기준으로 나누고, 배열로 만들어준다
names = input().split(' ')
#print("참가자", names)
scores = input().split(' ')
#print("점수", sores)
blank(" ")를 기준으로 input받은 문자열을 쪼개서(split) 배열로 만들어서 변수에 저장
2. 딕셔너리에 새로운 key:value 넣기
dict_name[key_name] = value_content
score = {}
for i in range(len(scores)):
s = scores[i]
if s!='기권':
score[names[i]] = int(s)
scores배열에 있는 값을 차례로 넣어서 검사함(for 반복문)
scores의 요소가 기권이 아니면 score 이라는 dict에 추가함
이름을 key, 점수를, value로!
3. dict_name.items(), sorted(key, reverse)
1)dict_name.items()
딕셔너리에서 키와 벨류를 튜플로 묶은 값을 반환함 => 리스트처럼 사용 가능
2) sorted(list, key, value)
리스트를 정렬해서 새로운 리스트를 만들어냄 => sort와 다름
sorted에서 key는 어떤 것을 기준으로 정렬할 것인지를 나타내줌
reverse = True 는 역순으로 정렬하는 것을 나타냄(내림차순) -> 디폴트는 오름차순임
4. 람다
def 함수이름(매개변수) :
return 결과
lambda 매개변수 : 결과
ans = sorted(score.items(), key=lambda x: x[1], reverse=True)
score이라는 딕셔너리에서 각 키와 벨류를 튜플로 묶어 리스트 생성
각 튜플의 index가 1인, 즉 2번째 값을 기준으로 해당 리스트를 정렬
이때, 오름차순이 아니라 내림차순으로 정렬
이렇게 만들어진 리스트를 ans에 대입
즉 ans는 튜플들로 이루어진 리스트로, 해당 튜플의 두번째 값인 점수를 기준으로 내림차순으로 정렬되어있음
5. 반복문과 break
for i in ans:
if i[1]<avg:
break
else:
print(i[0], end=' ')
ans에 있는 각 요소(각 튜플)을 차례대로 i에 저장
만약 각 튜플의 두번째 값 즉 점수가 평균을 넘지 못하면 해당 If 문을 빠져나옴
만약 각 튜플의 두번째 값 즉 점수가 평균을 넘으면 해당 튜플의 첫번쨰 값 즉 학생이름을 출력함
이때 print는 줄바꿈이 기본이므로 end=' '을 통해 줄바꿈하지 않음
'백 > python' 카테고리의 다른 글
라이브러리 사용방법 (0) | 2021.07.08 |
---|---|
자료형이 정수인지 확인하기 (0) | 2021.07.06 |
how to debug code (0) | 2021.06.27 |
반복문 연습 (0) | 2021.06.26 |
반복의 제어 (0) | 2021.06.26 |