코딩공부/점프 투 파이썬

## 점프 투 파이썬 - 2장 연습문제

integerJI 2020. 1. 24. 10:23

## 점프 투 파이썬 - 2장 연습문제

 

출처 : https://wikidocs.net/42526

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

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 = [11122333445]

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 = [123]

a[1] = 4
print(b) >>> [1. 4. 3]

# 결과의 이유라.. 그냥 0은 첫번째자리이고 1은 두번째자리라 1을 넣어 그자리를 4로 바꾼것..

## 정답
# [1, 4, 3]이 출력된다. 
# a와 b 변수는 모두 동일한 [1, 2, 3]이라는 리스트 객체를 가리키고 있기 때문이다.

 

---

 

글 쓰는 법에 대해 알아야 할 듯 가독성이 너무 떨어진다.

 

문제를 풀고 올리고 답을 보고 풀고 올리고 추가되는 점 열면 글이 너무 길어진다.