## 점프 투 파이썬 - 2장 연습문제
출처 : https://wikidocs.net/42526
https://github.com/integerJI/blahblah_jeong
# 1. 홍길동 씨의 과목별 점수는 다음과 같다. 홍길동 씨의 평균 점수를 구해 보자.
# 국어 80 # 영어 75 # 수학 55
a = 80
b = 75
c = 55
d = (a+b+c)/3
print(d)
## 정답은 똑같다 하지만 결과값이 70.0이 나오기때문에 소숫점을 없애기 위해 소숫점을 다 버렸다.
"%0.0f" % d
# >>> 70
# 2. 자연수 13이 홀수인지 짝수인지 판별할 수 있는 방법에 대해 말해 보자.
a = 13
b = a % 2
if b == 0 :
print("짝쑤")
elif b != 0 :
print("홀수")
else :
print("삐빅")
# fi문을 아직 안해서 안써도 되는데 뭔가 이렇게 말고는 생각이 안났었다 ..
## 정답
'''
1 % 2
1
2 % 2
0
3 % 2
1
4 % 2
0
'''
# 간단하게 나머지가 2로 나눴을때 0이냐 1이냐만 확인하면 되는거였다.
# 3. 홍길동 씨의 주민등록번호는 881120-1068234이다. 홍길동 씨의 주민등록번호를 연월일(YYYYMMDD) 부분과 그 뒤의 숫자 부분으로 나누어 출력해 보자.
# 슬라이싱 기법
a = 881120-1068234
# 모르겠다 PASS
## 정답
pin = "881120-1068234"
yyyymmdd = pin[:6] # pin[0:6] 으로도 사용 가능
num = pin[7:] # pin[7:0] 으로도 사용가능
print(yyyymmdd) # 881120 출력
print(num) # 1068234 출력
# 간단한거였다. 단지 생각이 안났을뿐
# 문자열에 대해 더 봐야겠다.
# 4. 주민등록번호 뒷자리의 맨 첫 번째 숫자는 성별을 나타낸다. 주민등록번호에서 성별을 나타내는 숫자를 출력해 보자.
# 문자열 인덱싱 사용
pin = "881120-1068234"
if pin[7] == 1 : # 6번째 자리의 숫자가 1일경우
print("남자")
elif pin[7] == 2 : # 위와 동일하게 2일경우
print("여자")
else :
print("삐빅")
# 이것도 if문 말고 어캐해줘야할지 몰라서 if문을 써버렸다.
## 정답
pin = "881120-1068234"
print(pin[7]) # 1이면 남자, 2이면 여자
# 너무 어렵게 생각해서 그런것같다. 그냥 6번째 자리의 수만 출력하면 될것을
# 5. 다음과 같은 문자열 a:b:c:d가 있다. 문자열의 replace 함수를 사용하여 a#b#c#d로 바꿔서 출력해 보자.
a = "a:b:c:d"
a.replace(":","#")
# 리플레이스를 써서 나타내주었다.
## 정답
a = "a:b:c:d"
b = a.replace(":", "#")
print(b)
'a#b#c#d'
# 정답은 b로 따로 나눠 저장을 했다. 기존 변수를 남기는 방식을 좀더 익숙해 져야겠다.
# 6. [1, 3, 5, 4, 2] 리스트를 [5, 4, 3, 2, 1]로 만들어 보자.
# 리스트 내장 함수
a = [1,3,5,4,2]
a.sort()
a.reverse()
# 먼저 정렬 시키고 거꾸로 시켜줬다.
## 정답은 같다.
sorted(a, reverse=True) # 이런식으로 사용할수있다.
# sort와 sorted의 차이점 알아보기
# 7. ['Life', 'is', 'too', 'short'] 리스트를 Life is too short 문자열로 만들어 출력해 보자.
# 문자열의 join 함수를 사용하면 리스트를 문자열로 쉽게 만들 수 있다.
" ".join(a)
# 조인 사용법이 처음에는 어려웠는데 제대로 배우니 괜찮아졌다. " " 공백으로 넣어 조인
## 정답
a = ['Life', 'is', 'too', 'short']
result = " ".join(a)
print(result)
# 마무리까지 말끔하게 끝내자. 변수명도 제대로 좀 주고
# 8. (1,2,3) 튜플에 값 4를 추가하여 (1,2,3,4)를 만들어 출력해 보자.
# 더하기 사용
a = 1,2,3
b = 4,
a + b
# 튜플 하나만 넣으려고 b는 끝에 , 를 주었다.
## 정답
a = (1, 2, 3)
a = a + (4,)
print(a)
# 단 이때 만들어지는 a의 튜플은 새로운 튜플을 생성해 그곳에 넣는곳이다 (메모리주소)
# 9. 다음과 같은 딕셔너리 a가 있다.
a = dict()
a >>> {}
다음 중 오류가 발생하는 경우를 고르고, 그 이유를 설명해 보자.
1. a['name'] = 'python'
2. a[('a',)] = 'python'
3. a[[1]] = 'python' # 키 값에 딕셔너리가 못들어감.
4. a[250] = 'python'
# 정답은 3번인것 같다. 키값에 딕셔너리가?? 딕셔너리는 못들어간다.
## 정답
a[[1]] = 'python'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
# 오류가 발생하는 이유는 딕셔너리의 키로는 변하는(mutable) 값을 사용할 수 없기 때문이다.
# 위 예에서 키로 사용된 [1]은 리스트이므로 변하는 값이다.
# 다른 예에서 키로 사용된 문자열, 튜플, 숫자는 변하지 않는(immutable) 값이므로 딕셔너리의 키로 사용이 가능하다.
# 10. 딕셔너리 a에서 'B'에 해당되는 값을 추출해 보자.
# 딕셔너리의 pop 함수를 사용해 보자.
a = {'A':90, 'B':80, 'C':70}
a.pop('B')
## 정답
a = {'A':90, 'B':80, 'C':70}
result = a.pop('B')
print(a) # {'A':90, 'C':70} 출력
print(result) # 80 출력
# 11. a 리스트에서 중복 숫자를 제거해 보자.
a = [1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5]
a.remove
## 정답
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 값은 어떻게 될까?
# 그리고 이런 결과가 오는 이유에 대해 설명해 보자.
a = b = [1, 2, 3]
a[1] = 4
print(b) >>> [1. 4. 3]
# 결과의 이유라.. 그냥 0은 첫번째자리이고 1은 두번째자리라 1을 넣어 그자리를 4로 바꾼것..
## 정답
# [1, 4, 3]이 출력된다.
# a와 b 변수는 모두 동일한 [1, 2, 3]이라는 리스트 객체를 가리키고 있기 때문이다.
---
글 쓰는 법에 대해 알아야 할 듯 가독성이 너무 떨어진다.
문제를 풀고 올리고 답을 보고 풀고 올리고 추가되는 점 열면 글이 너무 길어진다.
'코딩공부 > 점프 투 파이썬' 카테고리의 다른 글
## 점프 투 파이썬 - while문 (0) | 2020.01.26 |
---|---|
## 점프 투 파이썬 - if문 (0) | 2020.01.25 |
## 점프 투 파이썬 - 집합 자료형 && 불 자료형 && 자료형의 값을 저장하는 공간, 변수 (0) | 2020.01.23 |
## 점프 투 파이썬 - 튜플 자료형 && 딕셔너리 자료형 (0) | 2020.01.22 |
## 점프 투 파이썬 - 리스트 자료형 (0) | 2020.01.21 |