오합지졸 같이풀기

20241127 팀 공유 문제 풀이

수현조 2024. 11. 27. 18:59

튜터님 기초 문제 공유 (6문제) — # 저녁 때 같이 풀기!

`#숙제1 #Hello World를 5번 출력`

`#숙제2 #1부터 44까지 짝수만 출력`

`#숙제3 #1부터 44까지 짝수는 * 4, 홀수 그냥 출력`

`#숙제4 #Hello World 4번 출력`

`#숙제5 #numbers = [1, 2, 3, 4, 5]

#순회를 돌아 numbers 요소 출력 `#숙제6 #1부터 4까지 합 계산`

 

 

 

 

 

 

 

 

 

 

 

Chat GPT 딕셔너리 문제 (초, 중, 고급)

문제 1

주어진 student 딕셔너리에서 학생의 이름과 점수를 출력하는 프로그램을 작성하세요.
student = {
    'name': '홍길동',
    'age': 20,
    'score': 85
}
출력 예시
이름: 홍길동
점수: 85

 

문제 2: 딕셔너리 값 수정하기 (초급)

주어진 딕셔너리에서 score 값을 90으로 수정하고, 전체 딕셔너리를 출력하세요.
student = {
    'name': '김철수',
    'age': 22,
    'score': 78
}
출력 예시
{'name': '김철수', 'age': 22, 'score': 90}

문제 3: 딕셔너리 키와 값 추가하기 (중급)

student 딕셔너리에 새로운 항목 major (전공)을 추가하고 출력하는 프로그램을 작성하세요.
student = {
    'name': '이영희',
    'age': 21,
    'score': 92
}
출력예시
{'name': '이영희', 'age': 21, 'score': 92, 'major': '컴퓨터공학'}

문제 4: 딕셔너리에서 값 삭제하기 (중급)

주어진 딕셔너리에서 age 키를 삭제하고, 삭제된 후의 딕셔너리를 출력하세요.
student = {
    'name': '박민수',
    'age': 23,
    'score': 88
}
출력 예시
{'name': '박민수', 'score': 88}

문제 5: 딕셔너리 여러 개 합치기 (중급)

두 개의 딕셔너리가 주어졌을 때, 두 딕셔너리를 합친 새로운 딕셔너리를 만들어 출력하세요.
student1 = {
    'name': '최준호',
    'score': 75
}

student2 = {
    'age': 24,
    'major': '영문학'
}
출력 예시
{'name': '최준호', 'score': 75, 'age': 24, 'major': '영문학'}

 

 

1. update(): 원래 딕셔너리를 변경해야 한다면 사용.

  • 특징: student1에 student2의 값이 병합되며, 중복된 키는 student2의 값으로 덮어씌워짐.

update() 사용

 

 

2. | 연산자 또는 ** 전개 연산 : 새로운 딕셔너리를 생성하고 싶을 때 사용.

  • 특징: 새로운 딕셔너리를 생성합니다. student1과 student2는 원본 그대로 유지됨.

❘ 연산자 사용
전개 연산 (**) 사용

3. 반복문 : 여러 딕셔너리를 동적으로 병합해야 할 때 유용.

반복문 사용

 

 

문제 6: 딕셔너리에서 특정 키가 존재하는지 확인 (중급)

주어진 딕셔너리에서 name 키가 존재하는지 확인하고, 존재하면 "키가 존재합니다"를 출력하고,
존재하지 않으면 "키가 없습니다"를 출력하세요.
student = {
    'name': '이하늘',
    'age': 28
}

문제 7: 중첩된 딕셔너리 (고급)

다음과 같은 중첩된 딕셔너리에서 address 값을 출력하는 프로그램을 작성하세요.
person = {
    'name': '김하나',
    'contact': {
        'email': 'hana@naver.com',
        'phone': '010-1234-5678'
    },
    'address': '서울시 강남구'
}

??????

위 코드에서 True가 출력되는 이유 in 연산자가 딕셔너리에서 **키(key)**의 존재 여부를 확인하기 때문입니다.

in 연산자의 동작

  • 파이썬에서 딕셔너리에 대해 in 연산자를 사용하면, **딕셔너리의 키(key)**가 존재하는지 확인합니다.
  • **값(value)**는 확인하지 않습니다.

왜 True가 나오나요?

  • 딕셔너리 person의 키는 name, contact, address입니다.
  • address는 person 딕셔너리의 키로 존재하기 때문에, **'address' in person**은 True를 반환합니다.

정답


문제 8: 딕셔너리 값에 리스트 포함하기 (고급)

주어진 student_scores 딕셔너리에서 각 학생의 점수를 평균을 구하여 출력하세요.
student_scores = {
    '홍길동': [85, 90, 88],
    '이영희': [78, 82, 95],
    '김철수': [92, 94, 91]
}
출력 예시
홍길동의 평균 점수: 87.67
이영희의 평균 점수: 85.00
김철수의 평균 점수: 92.33

사실은 지피티가 알려줬다.

student_scores = {
    '홍길동': [85, 90, 88],
    '이영희': [78, 82, 95],
    '김철수': [92, 94, 91]
}

# 각 학생의 평균 점수를 계산하고 출력
for student, scores in student_scores.items():
    average =
sum(scores) / len(scores) # 평균 계산
    print(f"{student}의 평균 점수: {average:.2f}")

코드 설명

  1. for 루프:
    • student_scores.items()를 사용해 각 학생의 이름(student)과 점수 리스트(scores)를 가져옵니다.
  2. 평균 계산:
    • sum(scores): 리스트의 합계.
    • len(scores): 리스트의 길이(점수 개수).
    • 평균 = 합계 ÷ 점수 개수.
  3. 출력 형식:
    • f"{average:.2f}": 평균 점수를 소수점 둘째 자리까지 출력.

추가 설명

  1. 소수점 자리수:
    • :.2f는 소수점 두 자리로 제한합니다.
  2. 다른 방법으로 평균 구하기:
    • Python의 statistics 모듈을 사용해 평균을 구할 수도 있습니다:
from statistics import mean

for student, scores in student_scores.items():
    average = mean(scores)
    print(f"{student}의 평균 점수: {average:.2f}")

위 코드를 실행하면 각 학생의 평균 점수를 정확히 계산하여 출력할 수 있습니다.
추가로 궁금한 점이 있다면 언제든 질문해주세요! 😊      그래애~~

 

문제 9: 딕셔너리로 학생 성적 관리하기 (고급)

주어진 students 딕셔너리에서, 점수가 80점 이상인 학생만 출력하는 프로그램을 작성하세요.
students = {
    '홍길동': 85,
    '이영희': 78,
    '김철수': 92,
    '박민수': 65
}

지피티 베낌

코드 설명

  1. for 루프:
    • students.items()를 사용해 각 학생의 이름(student)과 점수(score)를 가져옵니다.
  2. 조건 검사:
    • if score >= 80: 점수가 80점 이상인 경우만 출력.
  3. 출력:
    • 조건에 맞는 학생의 이름과 점수를 출력.

 

문제 10: 딕셔너리로 학생 성적 최고/최저 찾기 (고급)

students 딕셔너리에서 성적이 가장 높은 학생과 성적이 가장 낮은 학생을 출력하세요.
students = {
    '홍길동': 85,
    '이영희': 78,
    '김철수': 92,
    '박민수': 65
}

지피티 베낌

정리

  1. max()와 min()
    • 딕셔너리에서 특정 기준(점수)을 기준으로 최대/최소를 구합니다.
  2. students.get
    • 값을 기준으로 비교하기 위해 딕셔너리의 값을 가져옵니다.

 

 

 

딕셔너리 활용 문제는...

내일할게요...