#!/usr/bin/env python
# coding: utf-8

# # 2장 연습문제

# In[1]:


# 1. 홍길동 씨의 과목별 점수를 참고하여 평균 점수를 구해보자.
a = {'국어':80, '영어':75, '수학':55}
sum(a.values())/len(a)


# In[2]:


a = 80
b = 75
c = 55
(a+b+c)/3


# In[3]:


# 2. 자연수 13이 홀수인지 짝수인지 판별할 수 있는 방법
if 13 % 2 == 0:
    print("짝수")
else:
    print("홀수")


# In[4]:


# 3. 홍길동 씨의 주민등록번호는 881120-1068234이다.
# 홍길동 씨의 주민등록번호를 연월일(YYYYMMDD) 부분과 그 뒤의 숫자 부분으로 나누어 출력해보자.
pin = "881120-1068234"


# In[8]:


yyyymmdd = pin[0:6]
yyyymmdd


# In[11]:


num = pin[7:]
num


# In[12]:


# 4. 주민등록번호 뒷자리의 맨 첫 번째 숫자는 성별을 나타낸다.
# 주만등록번호에서 성별을 나타내는 수자를 출력해보자.
pin = "881120-1068234"
print(pin[7])


# In[14]:


if pin[7] == '1' :
    print("남자")
else:
    print("여자")


# In[16]:


# 5. 다음과 같은 문자열 a:b:c:d가 있다. 문자열의 replace 함수를 사용하여 a#b#c#d로 바꿔서 출력해보자.
a = "a:b:c:d"
b = a.replace(":","#")
print(b)


# In[19]:


# 6. [1,3,5,4,2] 리스트를 [1,2,3,4,5]와 [5,4,3,2,1]로 만들어보자
a = [1,3,5,4,2]
a.sort() # [1,2,3,4,5]로 변경
a


# In[20]:


a.reverse() # [5,4,3,2,1]로 변경
a


# In[22]:


# 7. ['Life', 'is', 'too', 'short'] 리스트를 Life is too short 문자열로 만들어 출력해보자
a = ['Life', 'is', 'too', 'short']
result = ' '.join(a)
print(result)


# In[24]:


# 8. (1,2,3) 튜플에 값 4를 추가하여 (1,2,3,4)를 만들어 출력해보자
a = (1,2,3)
a = a + (4,)
a


# In[25]:


# 9. 다음과 같은 딕셔너리 a가 있다.
a = dict()
a


# #### 다음 중 오류가 발생하는 경우를 고르고 그 이유를 설명해보자.
# 1. a['name'] = 'python'
# 2. a[('a',)] = 'python'
# 3. a[[1]] = 'python'
# 4. a[250] = 'python'
# 
# - 고른 답: 2번
# - 이유 : 변수명과 같은 key 값이 들어갈 수 없어서

# ❌ 틀렸음. 답은 3번❌   
# 오류가 발생하는 이유는 딕셔너리의 키로는 변하는 값을 사용할 수 없기 때문이다. 위 예에서 키로 사용된 [1]은 리스트이므로 변하는 값이다. 다른 예에서 키로 사용된 문자열, 튜플, 숫자는 변하지 않는 값이므로 딕셔너리의 키로 사용이 가능하다.

# In[26]:


# 10. 딕셔너리 a에서 'B'에 해당하는 값을 추출해보자
a = {'A':90, 'B':80, 'C':70}
result = a['B']
print(a)
print(result)


# 이건 옆에 pop을 사용해서 풀어라고 말풍선이 있었는데 못봤음. 

# In[31]:


# pop을 사용할 경우
a = {'A':90, 'B':80, 'C':70}
result = a.pop('B')
print(a)
print(result)


# In[27]:


# 11. a 리스트에서 중복 숫자를 제거해보자.
a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
aSet = set(a)
# a 리스트를 집합 자료형으로 변환
b = list(aSet)
# 집합 자료형을 리스트 자료형으로 다시 변환
print(b) # [1,2,3,4,5] 출력


# - 리스트에서 중복 숫자를 제거하는 방법으로 집합 자료형으로 바꿔주는 방법이 있다. 그 다음에 다시 리스트로 변환하면 중복값이 사라진다.

# 12. 파이썬은 다음처럼 동일한 값에 여러 개의 변수를 선언할 수 있다.
# 다음과 같이 a, b 변수를 선언한 후 a의 두 번쨰 요솟값을 변경하면 b 값은 어떻게 될까?
# 이런 결과가 나오는 이유에 대해 설명해보자.

# In[28]:


a = b = [1, 2, 3]
a[1] = 4
print(b)


# a, b는 [1, 2, 3]이라는 동일한 리스트를 가진 자료형이 되기 때문에, a의 값이 변경되어도 b와 같이 변경된다. 이 둘은 동일 id 값을 가진다.

# In[29]:


print(id(a))
print(id(b))

