='Jeonbuk National University' a
1.
HW: 0315
아래와 같은 문자열이 있다고 하자.
1
. 적당한 인덱싱을 통하여 출력결과가 아래와 같도록 하라.
'U') a.find(
17
'y') a.find(
26
str(a)
'Jeonbuk National University'
'U'):a.find('y')+1] a[a.find(
'University'
hint: University는 10글자이다.
2
. 출력결과가 아래와 같도록 하는 코드를 작성하라. (lower 함수를 이용할 것)
a.lower()
'jeonbuk national university'
3
. 아래의 코드를 관찰하고 isupper()의 기능이 무엇인지 스스로 정리해보라.
'A'.isupper()
True
'AA'.isupper()
True
'Aa'.isupper()
False
'aa'.isupper()
False
'aA'.isupper()
False
대문자인가 확인하는 코드!
'aA'.islower()
False
소문자인거 확인하는 코드!
4
. 다음중 실행 불가능한 코드를 모두 골라라.
- ‘a’*2
'a'*2
'aa'
- ‘a’*‘2’
'a'*'2'
TypeError: can't multiply sequence by non-int of type 'str'
- ‘a’+2
'a'+2
TypeError: can only concatenate str (not "int") to str
- ‘a’+‘2’
'a'+'2'
'a2'
2.
HW 0315
1
. 길이가 0인 리스트를 만들어라. (비어있는 리스트를 만들어라)
(풀이1)
[]
[]
(풀이2)
list()
[]
2
. 다음의 실행값 중 가장 큰 숫자가 나오는 보기를 골라라. (에러가 나는 코드는 정답에서 제외함)
len(3.14)
(a) len([3.14])
(b) len('3.14') (c)
len(3.14)
TypeError: object of type 'float' has no len()
= 3.14;a? a
Type: float String form: 3.14 Docstring: Convert a string or number to a floating point number, if possible.
a.is_integer()
False
len([3.14])
1
= [3.14];a? a
Type: float String form: 3.14 Docstring: Convert a string or number to a floating point number, if possible.
a.is_integer()
False
len('3.14')
4
= '3.14';a? a
Type: float String form: 3.14 Docstring: Convert a string or number to a floating point number, if possible.
a.is_integer()
False
3
. 아래의 예제를 관찰하라.
'제 이름은 {}입니다'.format('abc')
'제 이름은 abc입니다'
'제 이름은 {}이고 사는곳은 {}입니다.'.format('abc','de')
'제 이름은 abc이고 사는곳은 de입니다.'
이 예제를 바탕으로 문자열에 포함된 .format()함수의 기능을 유추하라. 그리고 아래의 결과를 확인하라.
\(\to\) .format
의 기능은 {}
에 문자를 순서대로 넣어주는 역할.
= '행사가 {}월{}일-{}월{}일 abc펜션에서 있다고 합니다. 자세한 일정 등은 다시 공지하겠습니다.'
string format(3,24,3,25) string.
'행사가 3월24일-3월25일 abc펜션에서 있다고 합니다. 자세한 일정 등은 다시 공지하겠습니다.'
format(1,1,2,2) string.
'행사가 1월1일-2월2일 abc펜션에서 있다고 합니다. 자세한 일정 등은 다시 공지하겠습니다.'
4
. 아래의 예제를 관찰하라.
'abcdefg'.replace('g','u')
'abcdefu'
이 예제를 바탕으로 문자열의 .replace() 기능을 유추하라.
\(\to\) .replace
의 기능은 ’g’를 ’u’로 바꿔준다.
5
. 리스트자료형의 +와 * 연산을 이용하여 아래와 같은 list를 생성하라.
1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5] [
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
1] + [2] * 2 + [3] * 3 + [4] * 4 + [5] * 5 [
[1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]
hint: 아래의 코드를 관찰해보세요
1]*1+[2]*2 [
[1, 2, 2]
6
. 넘파이를 이용하여 아래와 같은 결과가 나오도록 코드가 작성하라.
\[\begin{bmatrix} 1 \\ 2 \end{bmatrix} + \begin{bmatrix} 11 \\ 22 \end{bmatrix} = \begin{bmatrix} 12 \\ 24 \end{bmatrix}\]
import numpy as np
1,2]) + np.array([11,22]) np.array([
array([12, 24])
1],[2]]) + np.array([[11],[22]]) np.array([[
array([[12],
[24]])
- 아래와 같은 벡터가 있다고 하자.
\[\boldsymbol{a}= \begin{bmatrix} 12 \\ 24 \end{bmatrix}\]
넘파이를 이용하여 아래의 결과가 나오게 하는 코드를 작성하라.
\[2\boldsymbol{a}= \begin{bmatrix} 24 \\ 48 \end{bmatrix}\]
2 * (np.array([[1],[2]]) + np.array([[11],[22]]))
array([[24],
[48]])
2 * np.array([12, 24])
array([24, 48])
2 * np.array([[12], [24]])
array([[24],
[48]])
3.
HW 0320
1
. 아래의 코드를 관찰하고, sum()의 기능을 유추하라.
sum([1,0,1,0])
2
\(\to\) 원소의 합
sum([True,False,True,False])
2
\(\to\) True는 1로, False는 0으로 인식
2
. 다음과 같은 리스트를 고려하자.
= [80,60,80,90,55,85,95,100,35,70,75,65,95]
x x
[80, 60, 80, 90, 55, 85, 95, 100, 35, 70, 75, 65, 95]
이를 수식으로 표현하면 아래와 같다.
\({\bf x} = [x_1,\dots,x_{13}]=[80,60,80,90,55,85,95,100,35,70,75,65,95]\)
리스트의 원소중 “\(x_i>80\)” 의 조건을 만족하는 원소는 모두 몇개인가?
hint: 리스트컴프리헨션과 sum()
함수를 이용할 것
sum([xi >80 for xi in x])
5
my answer
sum([x[i] > 80 for i in range(len(x))])
5
3
. 다음과 같은 리스트를 고려하자.
'A','B','C','D','A','A','B','A','F','C','C','C','A'] [
['A', 'B', 'C', 'D', 'A', 'A', 'B', 'A', 'F', 'C', 'C', 'C', 'A']
이 리스트에서 ‘A’ 혹은 ’B’의 숫자는 모두 몇개인가?
hint: 아래를 관찰
'A' < 'C'
True
'B' < 'C'
True
= ['A','B','C','D','A','A','B','A','F','C','C','C','A']
lst sum([l <'C' for l in lst])
7
my answer
= ['A','B','C','D','A','A','B','A','F','C','C','C','A']
lst sum([lst[i] < 'C' for i in range(len(lst))])
7
4
. 아래와 같은 리스트가 있다고 하자.
\({\bf x} = [1,2,1,5,6,2,4,7]\)
\({\bf y} = [3,2,4,1,2,5,6,7]\)
이러한 벡터를 파이썬에서 표현하기 위해서 아래와 같은 리스트를 만들었다고 하자.
=[1,2,1,5,6,2,4,7]
x=[3,2,4,1,2,5,6,7] y
리스트컴프리헨션을 이용하여
\[{\bf z}=[x_1^2+y_1^2, \dots, x_{8}^2+y_{8}^2]=[x_i^2+y_i^2: \text{for $i = 1,2,3,\dots,8$}]\]
와 같은 리스트를 생성하라.
**2+y[i]**2 for i in range(8)] [x[i]
[10, 8, 17, 26, 40, 29, 52, 98]
my answer
**2 + y[i]**2 for i in range(len(x))] [x[i]
[10, 8, 17, 26, 40, 29, 52, 98]
5
. 아래와 같은 문자열이 있다고 하자.
= 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== schacon@mylaptop.local' test_arr
이 문자열에서 대문자의 수를 count하라. (2022년 파이썬입문 중간고사 1-(5) 참고)
sum([s.isupper() for s in test_arr ])
155
error on my answer
sum([test_arr[i] == test_arr.upper()[i] for i in range(len(test_arr))])
230
이렇게 비교하면 대문자인 것은 세겠지만, 기호가 같은 것도 세기 때문에 over해서 sum하게 된다.
6
. 리스트컴프리헨션을 이용하여 아래와 같은 리스트를 생성하라. (2022년 파이썬입문 중간고사 1-(7) 참고)
'a',
['aa',
'aaa',
'aaaa',
'aaaaa',
'aaaaaa',
'aaaaaaa',
'aaaaaaaa',
'aaaaaaaaa',
'aaaaaaaaaa'] <- a가 10개있음
'a'*i for i in range(1,11)] [
['a',
'aa',
'aaa',
'aaaa',
'aaaaa',
'aaaaaa',
'aaaaaaa',
'aaaaaaaa',
'aaaaaaaaa',
'aaaaaaaaaa']
my answer
'a' * i for i in range(1,11)] [
['a',
'aa',
'aaa',
'aaaa',
'aaaaa',
'aaaaaa',
'aaaaaaa',
'aaaaaaaa',
'aaaaaaaaa',
'aaaaaaaaaa']
7
. 아래와 같은 list가 있다고 하자.
= [['g',1],['u',5],['e',2],['b',8],['i',2],['n',9]] test_lst
test_lst와 리스트컴프리헨션을 이용하여 아래를 출력하는 코드를 구현하라. (2022년 파이썬입문 중간고사 1-(9) 참고)
'g', 'uuuuu', 'ee', 'bbbbbbbb', 'ii', 'nnnnnnnnn'] [
['g', 'uuuuu', 'ee', 'bbbbbbbb', 'ii', 'nnnnnnnnn']
0]*l[1] for l in test_lst] [l[
['g', 'uuuuu', 'ee', 'bbbbbbbb', 'ii', 'nnnnnnnnn']
my answer
0] * test_lst[i][1] for i in range(len(test_lst))] [test_lst[i][
['g', 'uuuuu', 'ee', 'bbbbbbbb', 'ii', 'nnnnnnnnn']
8
. 아래와 같은 list를 생성하라.
1,
[2,2,
3,3,3,
4,4,4,4,
5,5,5,5,5,
...9,9,9,9,9,9,9,9,9] <- 9가 9개 있음
(풀이1) – 의도한 풀이
= list()
lst for i in range(1,10):
= lst + [i]*i lst
(풀이2) – 이걸 의도한건 아니었음…
= [[i]*i for i in range(1,10)] lst
print(str(lst).replace(' ','').replace(',[','').replace(']',',\n ').replace('[[','[').replace(',\n ,',']'))
[1,
2,2,
3,3,3,
4,4,4,4,
5,5,5,5,5,
6,6,6,6,6,6,
7,7,7,7,7,7,7,
8,8,8,8,8,8,8,8,
9,9,9,9,9,9,9,9,9]
error on my answer
* i for i in range(1,10)] [[i]
[[1],
[2, 2],
[3, 3, 3],
[4, 4, 4, 4],
[5, 5, 5, 5, 5],
[6, 6, 6, 6, 6, 6],
[7, 7, 7, 7, 7, 7, 7],
[8, 8, 8, 8, 8, 8, 8, 8],
[9, 9, 9, 9, 9, 9, 9, 9, 9]]
right answer
= []
l for i in range(1,10):
= l + [i] * i l
9
. 아래와 같은 리스트를 관찰하라.
= ['2022/09/21','2022/10/30','2022/12/25','2023/01/01','2023/01/31','2023/03/20'] lst
이러한 리스트를 아래와 같은 리스트로 변환하는 코드를 작성하라.
'2022-09-21', '2022-10-30', '2022-12-25', '2023-01-01', '2023-01-31', '2023-03-20'] [
['2022-09-21',
'2022-10-30',
'2022-12-25',
'2023-01-01',
'2023-01-31',
'2023-03-20']
hint: string의 .replace()기능과 리스트 컴프리헨션의 응용
'/','-') for s in lst] [s.replace(
['2022-09-21',
'2022-10-30',
'2022-12-25',
'2023-01-01',
'2023-01-31',
'2023-03-20']
my answer
for i in range(len(lst)):
'/','-')
lst[i].replace( lst
['2022/09/21',
'2022/10/30',
'2022/12/25',
'2023/01/01',
'2023/01/31',
'2023/03/20']
10
. 아래와 같은 문자열을 고려하라.
'2021. 01. 05.'
'2021. 01. 05.'
띄어쓰기를 제거하는 코드를 구현하라. 즉 출력결과가 아래와 같도록 만드는 코드를 구현하라.
'2021.01.05'
'2021.01.05'
hint: 아래코드 관찰
'asdf'.replace('a','')
'sdf'
'2021. 01. 05.'.replace(' ','')
'2021.01.05.'
my answer
= '2021.01.05';a.replace('. ','.');a a
'2021.01.05'
11
. 아래의 코드를 관찰하라.
'-'.join(['2022','01','05'])
'2022-01-05'
'.'.join(['2022','01','05'])
'2022.01.05'
’dd’에 있는 내용을 이용하여 join의 원소들을 합쳐라.
12
. 아래와 같이 하나의 특수문자로 이루어진 리스트를 고려하자.
= ['■'] block
이를 이용하여 아래와 같은 결과를 출력하라.
'■-■-■-■-■-■-■-■-■-■' # 여기에서 '■'는 모두 10개 있음
'■-■-■-■-■-■-■-■-■-■'
hint: 11번 문제의 코드를 응용할 것
'-'.join(block*10)
'■-■-■-■-■-■-■-■-■-■'
my answer
'-'.join(block*10)
'■-■-■-■-■-■-■-■-■-■'
4.
HW: 03-22 (2)
1
. 길이가 1인 튜플을 만들어 자신의 학번을 저장하라. 길이가 1인 튜플을 만들어 자신의 영문이름을 저장하라. 두 튜플을 + 연산자로 합쳐아래와 같은 출력결과를 얻어라. 최종 결과는 예를들면 아래와 같아야 한다.
'2021-43052', 'TomJohn') (
('2021-43052', 'TomJohn')
='2021-43052',
a='tomJohn',
b+b a
('2021-43052', 'tomJohn')
my answer
= '2222-1111';b = 'TomJohn'; (a , b) a
('2222-1111', 'TomJohn')
2-5
. 아래는 파이썬프로그래밍 수강생들의 학번, 이름, 출석점수, 과제점수, 중간고사점수, 기말고사점수를 저장한 중첩리스트이다.
= [['2021-43052', 'GuebinChoi', 5, 10, 20, 25],
lst '2019-12342', 'Heung-min Son', 10, 15, 30, 15],
['2018-32234', 'hynn', 7, 20, 30, 15],
['2022-42323', 'Minji', 8, 20, 20, 35],
['2023-55342', 'Hanni', 7, 20, 30, 35],
['2022-46624', 'Danielle', 3, 15, 30, 40],
['2022-11239', 'Haerin', 10, 20, 30, 40],
['2022-32114', 'Hyein', 10, 20, 20, 35]]
[ lst
[['2021-43052', 'GuebinChoi', 5, 10, 20, 25],
['2019-12342', 'Heung-min Son', 10, 15, 30, 15],
['2018-32234', 'hynn', 7, 20, 30, 15],
['2022-42323', 'Minji', 8, 20, 20, 35],
['2023-55342', 'Hanni', 7, 20, 30, 35],
['2022-46624', 'Danielle', 3, 15, 30, 40],
['2022-11239', 'Haerin', 10, 20, 30, 40],
['2022-32114', 'Hyein', 10, 20, 20, 35]]
2
. 파이썬프로그래밍 수강생의 수는 모두 몇명인가?
len(lst)
8
3
. 전북대학교 지침에 따라 출석점수가 7보다 작은 학생은 (즉 출석점수 < 7
일 경우) F학점을 부여하게 되어있다. 이 기준에 따르면 F를 받는 학생은 모두 몇명인가?
sum([att<7 for _,_, att, *rest in lst])
2
my answer
sum([lst[i][2] < 7 for i in range(len(lst))])
2
풀이 뜯어보기
for _,_, att, *rest in lst] [att
[5, 10, 7, 8, 7, 3, 10, 10]
순서대로 학번, 이름, 출석점수, 나머지~
-
for a,b,c,d,_,_ in lst:
print(c,d)
5 10
10 15
7 20
8 20
7 20
3 15
10 20
10 20
-
print(*[1,2,3])
1 2 3
print([1,2,3])
[1, 2, 3]
4
. 파이썬프로그래밍 수업의 경우 출석+레포트 < 21 일 경우 F학점을 부여한다고 한다. 이 기준에 따르면 F를 받는 학생은 모두 몇명인가?
sum([att+rep < 21 for _,_, att,rep, *rest in lst])
2
my answer
sum([c + d < 21 for _,_,c,d,*rest in lst])
2
5
. 리스트의 정렬순서를 [학번, 이름, …, 기말고사점수] 가 아니라 [이름, 학번, … , 기말고사점수] 와 같이 되도록 변경하는 코드를 작성하라.
*rest] for studentid, name, *rest in lst] [[name,studentid,
[['GuebinChoi', '2021-43052', 5, 10, 20, 25],
['Heung-min Son', '2019-12342', 10, 15, 30, 15],
['hynn', '2018-32234', 7, 20, 30, 15],
['Minji', '2022-42323', 8, 20, 20, 35],
['Hanni', '2023-55342', 7, 20, 30, 35],
['Danielle', '2022-46624', 3, 15, 30, 40],
['Haerin', '2022-11239', 10, 20, 30, 40],
['Hyein', '2022-32114', 10, 20, 20, 35]]
my answer
*rest] for a,b,*rest in lst] [[b,a,
[['GuebinChoi', '2021-43052', 5, 10, 20, 25],
['Heung-min Son', '2019-12342', 10, 15, 30, 15],
['hynn', '2018-32234', 7, 20, 30, 15],
['Minji', '2022-42323', 8, 20, 20, 35],
['Hanni', '2023-55342', 7, 20, 30, 35],
['Danielle', '2022-46624', 3, 15, 30, 40],
['Haerin', '2022-11239', 10, 20, 30, 40],
['Hyein', '2022-32114', 10, 20, 20, 35]]
6
. 아래의 코드를 관찰하라.
'2023-03-22'.split('-')
['2023', '03', '22']
이 코드를 바탕으로 split의 기능을 유추하라.
\(\to\) split
은 호출한 문자 기준으로 문자 나누는 역할
7
. 6의 실행결과를 되돌리는 코드를 작성하라. 즉
'2023', '03', '22'] [
['2023', '03', '22']
와 같은 리스트를 아래의 string으로 바꾸는 코드를 작성하라.
'2023-03-22'
'2023-03-22'
hint: join을 이용할 것
'-'.join(['2023', '03', '22'])
'2023-03-22'
my answer
= ['2023', '03', '22'];'-'.join(lst) lst
'2023-03-22'
다음은 인터넷에서 긁어온 어떠한 텍스트이다.
= "국내뿐 아니라 해외 인기도 심상치 않다. 2023년 1월 18일 'Ditto'가 빌보드 핫 100에 96위로 진입했다. 이는 K-pop 역사상 데뷔후 최단 빌보드 Hot 100 차트 입성 기록이다. 다른 뮤지션들이 보통 데뷔 후 수년간 쌓아온 팬덤을 기반으로 빌보드에 입성한데 비해, 뉴진스의 기록은 이례적인 것으로 평가받고 있다. 또한 'OMG'가 빌보드 핫 100에 91위로 진입한 동시에 'Ditto'는 85위로 순위가 상승, 핫 100 주간차트에 두 곡을 올려놓았다. K-Pop 역사상 이 차트에 두 곡 이상을 진입시킨 아티스트는 방탄소년단과 블랙핑크가 유일하다. 'Ditto'는 1월 셋째주 기준, 빌보드뿐만 아니라 영국 오피셜 싱글 차트 '톱 100'에 2주 연속 진입하기도 했다." text
8
. text는 총 몇개의 문장으로 이루어져 있는가?
hint: 이 텍스트의 문장은 모두 .로 끝난다.
= text.split('. ')
lst lst
['국내뿐 아니라 해외 인기도 심상치 않다',
"2023년 1월 18일 'Ditto'가 빌보드 핫 100에 96위로 진입했다",
'이는 K-pop 역사상 데뷔후 최단 빌보드 Hot 100 차트 입성 기록이다',
'다른 뮤지션들이 보통 데뷔 후 수년간 쌓아온 팬덤을 기반으로 빌보드에 입성한데 비해, 뉴진스의 기록은 이례적인 것으로 평가받고 있다',
"또한 'OMG'가 빌보드 핫 100에 91위로 진입한 동시에 'Ditto'는 85위로 순위가 상승, 핫 100 주간차트에 두 곡을 올려놓았다",
'K-Pop 역사상 이 차트에 두 곡 이상을 진입시킨 아티스트는 방탄소년단과 블랙핑크가 유일하다',
"'Ditto'는 1월 셋째주 기준, 빌보드뿐만 아니라 영국 오피셜 싱글 차트 '톱 100'에 2주 연속 진입하기도 했다."]
len(lst)
7
error on my answer
len(text.split('.'))-1
7
\(\to\) . 띄어쓰기를 생각 못 함
9
. 각 문장은 몇개의 단어로 이루어져 있는가?
hint: 각 단어는 공백으로 구분된다.
len(s.split(' ')) for s in lst] [
[6, 9, 11, 18, 18, 12, 16]
sum([len(s.split(' ')) for s in lst])
90
my answer
len(text.split('. ')[i].split(' ')) for i in range(len(text.split('. ')))] [
[6, 9, 11, 18, 18, 12, 16]
sum([len(text.split('. ')[i].split(' ')) for i in range(len(text.split('. ')))])
90
10
. 100이라는 단어가 포함된 문장은 모두 몇 개 인가?
hint: 아래의 코드를 관찰
'a' in 'abcd'
True
'100' in s for s in lst] [
[False, True, True, False, True, False, True]
sum(['100' in s for s in lst])
4
my answer
sum(['100' in text.split('. ')[i] for i in range(len(text.split('. ')))])
4
5
HW 0327 (1)
ssh코드
: 1-2
아래의 문자열을 고려하자.
= 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== schacon@mylaptop.local' test_arr
1
. 이 문자열에서 index = 0,2,4,6,8,… 에 해당하는 원소를 출력하는 코드를 작성하라. (2022-파이썬입문 중간고사 1-(2) 참고)
# 출력결과는 아래와 같아야 한다.
'shraAABNa1cEAAIAAEkOpDrH1SrTpLG9jmBDUP+azHTWhIy5w8HJ9bUriz7lLV49F5VbpSgcaPvkd/TBWFRHoFRtqi1KXHZMiqVRsAwsMvlK7A3aJAnMQx+VW6/Im1uFjJpr8XpDjNyv/bretEm+WOPTI9PVLar2E6/lbg331KtIj2od1rTMVsxrF9r+7= cao@yatplcl'
2] test_arr[::
'shraAABNa1cEAAIAAEkOpDrH1SrTpLG9jmBDUP+azHTWhIy5w8HJ9bUriz7lLV49F5VbpSgcaPvkd/TBWFRHoFRtqi1KXHZMiqVRsAwsMvlK7A3aJAnMQx+VW6/Im1uFjJpr8XpDjNyv/bretEm+WOPTI9PVLar2E6/lbg331KtIj2od1rTMVsxrF9r+7= cao@yatplcl'
2
. 위 문자열을 뒤집은 문자열을 구하는 코드를 구현하라. (2022-파이썬입문 중간고사 1-(4) 참고)
# 출력결과는 아래와 같아야 한다.
'lacol.potpalym@nocahcs ==Q7M+frw9iFRrNxbsSVqMlTarQ10d1os2njkImtaKn1+3r3wg+b8li/Z68Ec2DryauLMVmPZ98IPTnPZO4WA+ZmnE/trewr0bP/wv6ybNYjvDNpyX88XrrpKJQjlFUuz1bmFIe/86wW0V3+5x9Q1McnsAoJoaF3tAX7/KVlSvFMdsdwQANsjR6V8qLicMsZAHpXhKn1XixqBtiRXF3oAH+RCFXWlByTM/JdOk7vbP3adc0gwSppPbkVQ5XFl9h4fVELElx7MzQivrFUhbj9WJ4HJ81we5Zy4Idh7WYTDHlzfan+lPGUSDWB/mojT9KGTLNpITmrbS71YHfrHDkpUOlkAEQAAAwIBAAAAE2cy1CazN3BAAAA asr-hss'
-1] test_arr[::
'lacol.potpalym@nocahcs ==Q7M+frw9iFRrNxbsSVqMlTarQ10d1os2njkImtaKn1+3r3wg+b8li/Z68Ec2DryauLMVmPZ98IPTnPZO4WA+ZmnE/trewr0bP/wv6ybNYjvDNpyX88XrrpKJQjlFUuz1bmFIe/86wW0V3+5x9Q1McnsAoJoaF3tAX7/KVlSvFMdsdwQANsjR6V8qLicMsZAHpXhKn1XixqBtiRXF3oAH+RCFXWlByTM/JdOk7vbP3adc0gwSppPbkVQ5XFl9h4fVELElx7MzQivrFUhbj9WJ4HJ81we5Zy4Idh7WYTDHlzfan+lPGUSDWB/mojT9KGTLNpITmrbS71YHfrHDkpUOlkAEQAAAwIBAAAAE2cy1CazN3BAAAA asr-hss'
파이썬 프로그래밍 시험성적
: 3-4
아래와 같은 dictionary가 있다고 가정하자.
={'202212377': {'att': 65, 'rep': 45, 'mid': 0, 'fin': 10},
dct'202212473': {'att': 95, 'rep': 30, 'mid': 60, 'fin': 10},
'202212310': {'att': 65, 'rep': 85, 'mid': 15, 'fin': 20},
'202212460': {'att': 55, 'rep': 35, 'mid': 35, 'fin': 5},
'202212320': {'att': 80, 'rep': 60, 'mid': 55, 'fin': 70},
'202212329': {'att': 75, 'rep': 40, 'mid': 75, 'fin': 85},
'202212408': {'att': 65, 'rep': 70, 'mid': 60, 'fin': 75},
'202212319': {'att': 60, 'rep': 25, 'mid': 20, 'fin': 35},
'202212348': {'att': 95, 'rep': 55, 'mid': 65, 'fin': 90},
'202212306': {'att': 90, 'rep': 25, 'mid': 95, 'fin': 50},
'202212308': {'att': 55, 'rep': 45, 'mid': 75, 'fin': 30},
'202212366': {'att': 95, 'rep': 60, 'mid': 25, 'fin': 55},
'202212367': {'att': 95, 'rep': 35, 'mid': 0, 'fin': 25},
'202212461': {'att': 50, 'rep': 55, 'mid': 90, 'fin': 45}}
여기에서 ‘202212377’ 등은 학번을, att는 출석점수, rep는 레포트점수, mid는 중간고사 점수, fin은 기말고사 점수를 의미한다.
3
. 학생들의 학번을 아래와 같은 방식으로 출력하는 코드를 작성하라.
# 출력예시
'2022-12377',
['2022-12473',
'2022-12310',
'2022-12460',
'2022-12320',
'2022-12329',
'2022-12408',
'2022-12319',
'2022-12348',
'2022-12306',
'2022-12308',
'2022-12366',
'2022-12367',
'2022-12461']
4]+'-'+k[4:] for k in dct] [k[:
['2022-12377',
'2022-12473',
'2022-12310',
'2022-12460',
'2022-12320',
'2022-12329',
'2022-12408',
'2022-12319',
'2022-12348',
'2022-12306',
'2022-12308',
'2022-12366',
'2022-12367',
'2022-12461']
error on my answer
for k in dct.keys():
print(k[:4],'-',k[4:])
2022 - 12377
2022 - 12473
2022 - 12310
2022 - 12460
2022 - 12320
2022 - 12329
2022 - 12408
2022 - 12319
2022 - 12348
2022 - 12306
2022 - 12308
2022 - 12366
2022 - 12367
2022 - 12461
띄어쓰기가 있고, ’’로 묶이지도 않았고, 리스트로 묶이지도 않음
= []
kk for k in dct.keys():
4]+'-'+k[4:])
kk.append(k[: kk
['2022-12377',
'2022-12473',
'2022-12310',
'2022-12460',
'2022-12320',
'2022-12329',
'2022-12408',
'2022-12319',
'2022-12348',
'2022-12306',
'2022-12308',
'2022-12366',
'2022-12367',
'2022-12461']
4
. 출석점수가 70점 이상인(>=70) 학생들의 학번을 출력하는 코드를 작성하라. (2022-파이썬입문 중간고사 2-(3) 참고)
# 출력예시
'2022-12473',
['2022-12320',
'2022-12329',
'2022-12348',
'2022-12306',
'2022-12366',
'2022-12367']
4]+'-'+k[4:] for k,v in dct.items() if v['att']>70] [k[:
['2022-12473',
'2022-12320',
'2022-12329',
'2022-12348',
'2022-12306',
'2022-12366',
'2022-12367']
my answer
4] + '-' + k[4:] for k in dct if dct[k]['att']>=70] [k[:
['2022-12473',
'2022-12320',
'2022-12329',
'2022-12348',
'2022-12306',
'2022-12366',
'2022-12367']
Oxford-III
: 5–10 // reference
아래는 이미지 파일명들이 저장된 string을 불러오는 코드이다.
import requests
= 'https://raw.githubusercontent.com/guebin/PP2023/main/posts/01_PythonBasic/Oxford-IIIT.txt'
url = requests.get(url).content.decode() txt
txt의 출력 일부를 나타내면 아래와 같다.
'Abyssinian_1.jpg\nAbyssinian_10.jpg\nAbyssinian_100.jpg\nAbyssinian_100.mat\nAbyssinian_101.jpg\nAbyssinian_101.mat\nAbyssinian_102.jpg\nAbyssinian_102.mat\nAbyssinian_103.jpg\nAbyssinian_104.jpg\nAbyssinian_105.jpg\nAbyssinian_106.jpg\nAbyssinian_107.jpg\nAbyssinian_108.jpg\nAbyssinian_109.jpg\nAbyssinian_11.jpg\nAbyssinian_110.jpg\nAbyssinian_111.jpg\nAbyssinian_112.jpg\nAbyssinian_113.jpg\nAbyssinian_114.jpg\nAbyssinian_115.jpg\nAbyssinian_116.jpg\nAbyssinian_117.jpg\nAbyssinian_118.jpg\nAbyssinian_119.jpg\nAbyssinian_12.jpg\nAbyssinian_120.jpg\nAbyssinian_121.jpg\nAbyssinian_122.jpg\nAbyssinian_123.jpg\nAbyssinian_124.jpg\nAbyssinian_125.jpg\nAbyssinian_126.jpg\nAbyssinian_127.jpg\nAbyssinian_128.jpg\nAbyssinian_129.jpg\nAbyssinian_13.jpg\nAbyssinian_130.jpg\nAbyssinian_131.jpg\nAbyssinian_132.jpg\n .......
5
. 각 파일명은 구분되어있다. 위의 스트링을 분해하여 아래와 같은 리스트를 생성하고 fname_list에 저장하라.
# fname_list 의 출력결과는 아래와 같아야 한다.
'Abyssinian_1.jpg','Abyssinian_10.jpg', ... ,'yorkshire_terrier_98.jpg', 'yorkshire_terrier_99.jpg'] [
= txt.split('\n')
fname_list 10] fname_list[:
['Abyssinian_1.jpg',
'Abyssinian_10.jpg',
'Abyssinian_100.jpg',
'Abyssinian_100.mat',
'Abyssinian_101.jpg',
'Abyssinian_101.mat',
'Abyssinian_102.jpg',
'Abyssinian_102.mat',
'Abyssinian_103.jpg',
'Abyssinian_104.jpg']
6
. 각 이미지파일명은 아래와 같은 규칙으로 저장되어 있다.
- 파일명의 첫글자가 대문자이면 고양이를 의미하고 첫글자가 소문자이면 강아지를 의미한다.
_
이전의 영문명은 고양이 혹은 강아지의 종(breed)을 의미한다.- 이미지 파일명이 입력으로 오면 강아지인지 고양이인지 판단하여 ‘cat’ or ’dog’를 리턴하는 함수 f를 구현하라.
(함수사용예시)
'yorkshire_terrier_99.jpg')
f('dog'
'Abyssinian_1.jpg')
f('cat'
def f(fname):
return 'cat' if fname[0].isupper() else 'dog'
'yorkshire_terrier_99.jpg'), f('Abyssinian_1.jpg') f(
('dog', 'cat')
my answer
def name(name):
if name[0].isupper():
return 'cat'
elif name[0].islower():
return 'dog'
'yorkshire_terrier_99.jpg'), name('Abyssinian_1.jpg') name(
('dog', 'cat')
7
. 5의 결과로 나온 fname_list를 입력으로 하고 리스트의 각 원소가 고양이를 의미하는 그림인지 강아지를 의미하는 그림인지 나타내는 리스트를 만들어라.
## 입력예시
'Abyssinian_1.jpg','Abyssinian_10.jpg',...,'yorkshire_terrier_98.jpg', 'yorkshire_terrier_99.jpg']
[## 출력예시
'cat', 'cat', ... , 'dog', 'dog'] [
= [f(l) for l in fname_list]
result 10] result[:
['cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat']
my answer
for i in range(len(fname_list))][:10] [f(fname_list[i])
['cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat']
8
. 강아지 그림과 고양이 그림이 각각 몇 장씩 포함되어 있는지 파악하는 코드를 구현하라.
sum([s=='cat' for s in result]) # 고양이
2403
sum([s=='dog' for s in result]) # 강아지
4990
my answer
sum([result[i] == 'cat' for i in range(len(result))])
2403
len(result) - sum([result[i] == 'cat' for i in range(len(result))])
4990
9
. 포메라니안 종의 그림이 몇장있는지 파악하는 코드를 구현하라.
hint: 포메라니안 그림은 파일명에 ‘pomeranian’ 을 포함한다.
sum(['pomeranian' in s for s in fname_list])
200
my answer
’pomeranian’을 포함하면 0이 return 되고 아니면 -1이 return되는 코드로 길게 짰다.
len(fname_list) + sum(fname_list[i].find('pomeranian') for i in range(len(fname_list)))
200
10
. 아래의 dct는 포메라니안과 사모예드가 각각 몇장씩 포함되어있는지 정리하기 위해 임시로 정리한 dictionary이다. 각 종이 몇 장씩 포함되어있는지 구하여 dct를 수정하라.
= {'pomeranian':0, 'samoyed':0}
dct dct
{'pomeranian': 0, 'samoyed': 0}
예를들어 포메라니안과 사모에예드의 그림이 각각 200장씩 있다면 아래와 같이 딕셔너리를 수정해야한다.
'pomeranian'] = sum(['pomeranian' in s for s in fname_list])
dct['samoyed'] = sum(['samoyed' in s for s in fname_list])
dct[ dct
{'pomeranian': 200, 'samoyed': 200}
my answer
'pomeranian'] = sum(['pomeranian' in s for s in fname_list]) dct[
'samoyed'] = sum(['samoyed' in s for s in fname_list]) dct[
dct
{'pomeranian': 200, 'samoyed': 200}
6.
HW 0327 (2)
1
. 아래와 같은 맵핑을 고려하자.
문자 | 숫자 |
---|---|
a | 1 |
b | 0 |
이를 딕셔너리로 표현하면 아래와 같다.
= {'a':0, 'b':1} dct
위 규칙에 따라서 아래의 리스트의 원소를 문자로 각각 변환하라.
= [1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1] lst
# 출력은 아래와 같아야 한다.
'b', 'a', 'b', 'a', 'b', 'a', 'b', 'b', 'b', 'b', 'a', 'a', 'b', 'a', 'b'] [
for l in lst for k,v in dct.items() if v==l] [k
['b', 'a', 'b', 'a', 'b', 'a', 'b', 'b', 'b', 'b', 'a', 'a', 'b', 'a', 'b']
error on my answer
인덱싱된 값(value)을 가져와서 lst랑 비교한다음 id랑 연결해야 하는데, 연결해서 가져오는 법을 몰랐다.
for k,v in dct.items()] [v
[0, 1]
for k,v in dct.items()] [k
['a', 'b']
for s in lst for k,v in dct.items() if v==s] [k
['b', 'a', 'b', 'a', 'b', 'a', 'b', 'b', 'b', 'b', 'a', 'a', 'b', 'a', 'b']
2
. 아래와 같은 맵핑을 고려하자.
월 | 의미 |
---|---|
1,2 | 겨울방학 |
3,4,5,6 | 1학기 |
7,8 | 여름방학 |
9,10,11,12 | 2학기 |
이러한 규칙에 맞게 아래의 리스트를 적절한 문자열로 변환하라.
= [1,2,2,3,4,5,6,7,8,9,9,10,11,12] month
## 출력은 아래와 같아야 한다.
'겨울방학', '겨울방학', '겨울방학', '1학기', '1학기', '1학기', '1학기', '여름방학', '여름방학', '2학기', '2학기', '2학기', '2학기', '2학기'] [
= {'겨울방학':[1,2], '1학기':[3,4,5,6], '여름방학':[7,8], '2학기':[9,10,11,12]}
dct for m in month for k,v in dct.items() if m in v] [k
['겨울방학',
'겨울방학',
'겨울방학',
'1학기',
'1학기',
'1학기',
'1학기',
'여름방학',
'여름방학',
'2학기',
'2학기',
'2학기',
'2학기',
'2학기']
my answer
if c in v
을 못 씀…..
= {'겨울방학':[1,2],'1학기':[3,4,5,6],'여름방학':[7,8],'2학기':[9,10,11,12]} dct
for c in month for k,v in dct.items() if c in v] [k
['겨울방학',
'겨울방학',
'겨울방학',
'1학기',
'1학기',
'1학기',
'1학기',
'여름방학',
'여름방학',
'2학기',
'2학기',
'2학기',
'2학기',
'2학기']
합성변환
3-5.
아래와 같은 맵핑을 고려하자.
(규칙1)
문자 | 숫자 |
---|---|
바나나 | 0 |
사과 | 1 |
오토바이 | 2 |
자동차 | 3 |
자전거 | 4 |
(규칙2)
아이템 | 카테고리 |
---|---|
바나나 | 과일 |
사과 | 과일 |
오토바이 | 탈것 |
자동차 | 탈것 |
자전거 | 탈것 |
각각의 규칙을 나타내는 딕셔너리는 아래와 같이 선언되어있다고 하자.
= {'바나나':0, '사과':1, '오토바이':2, '자동차':3, '자전거':4}
dct1 = {'과일':['바나나','사과'], '탈것':['오토바이','자동차','자전거']} dct2
3
. 규칙1를 이용하여 아래와 같은 리스트를 변환하는 함수를 구현하고 그 함수를 f라 선언하라.
# 입력
0,1,0,1,4]
[
# 출력
'바나나', '사과', '바나나', '사과', '자전거'] [
(사용예시)
0,1,0,1,4])
f([
'바나나', '사과', '바나나', '사과', '자전거'] [
def f(lst):
return [k for l in lst for k,v in dct1.items() if v == l]
0,1,0,1,4]) f([
['바나나', '사과', '바나나', '사과', '자전거']
my answer
for i in [0,1,0,1,4] for k,v in dct1.items() if i==v] [k
['바나나', '사과', '바나나', '사과', '자전거']
def f_csy(a):
return [k for i in a for k,v in dct1.items() if i==v]
0,1,0,1,4]) f_csy([
['바나나', '사과', '바나나', '사과', '자전거']
4
. 규칙2를 이용하여 아래와 같이 리스트를 변환하는 함수를 구현하고 그 함수를 g라고 선언하라.
# 입력
'바나나','바나나','바나나','자동차']
[
# 출력
'과일','과일','과일','탈것']
[
(사용예시)
'바나나','바나나','바나나','자동차'])
g([
'과일', '과일', '과일', '탈것'] [
def g(lst):
return [k for l in lst for k,v in dct2.items() if l in v]
'바나나','바나나','바나나','자동차']) g([
['과일', '과일', '과일', '탈것']
my answer
for a in ['바나나','바나나','바나나','자동차'] for k,v in dct2.items() if a in v] [k
['과일', '과일', '과일', '탈것']
def g_csy(b):
return([k for a in b for k,v in dct2.items() if a in v])
'바나나','바나나','바나나','자동차']) g_csy([
['과일', '과일', '과일', '탈것']
5
. 규칙1-2를 이용하여 아래와 같은 숫자로 이루어진 입력을 ‘과일’, ‘탈것’ 중 하나로 바꾸는 코드를 구현하라.
# 입력
0,1,0,1,3,4,2,2,3,4,1,0]
[
# 출력
'과일', '과일', '과일', '과일', '탈것', '탈것', '탈것', '탈것', '탈것', '탈것', '과일', '과일'] [
hint \(g(f(x))\) 를 이용하라.
0,1,0,1,3,4,2,2,3,4,1,0]))
g(f([
'과일', '과일', '과일', '과일', '탈것', '탈것', '탈것', '탈것', '탈것', '탈것', '과일', '과일'] [
['과일', '과일', '과일', '과일', '탈것', '탈것', '탈것', '탈것', '탈것', '탈것', '과일', '과일']
my answer
0,1,0,1,3,4,2,2,3,4,1,0])) g_csy(f_csy([
['과일', '과일', '과일', '과일', '탈것', '탈것', '탈것', '탈것', '탈것', '탈것', '과일', '과일']
7.
Oxford-III
: 1–5 // reference
아래는 이미지 파일명들이 저장된 string을 불러오는 코드이다.
import requests
= 'https://raw.githubusercontent.com/guebin/PP2023/main/posts/01_PythonBasic/Oxford-IIIT.txt'
url = requests.get(url).content.decode() txt
이미지파일이 저장된 형식은 아래와 같다.
Abyssinian_1.jpg British_Shorthair_129.jpg
note: British_Shorthair와 같이 종 이름 사이에 _가 들어있는 경우도 있음.
1
. txt를 적당히 변환하여 아래와 같은 list를 만들어라.
10],lst[810:820]
lst[:
'Abyssinian',
(['Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian'],
'BritishShorthair',
['BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair'])
hint1
'Abyssinian_1.jpg\nAbyssinian_10.jpg'.split('\n')
['Abyssinian_1.jpg', 'Abyssinian_10.jpg']
hint2
''.join(['British', 'Shorthair'])
'BritishShorthair'
''.join(['Abyssinian'])
'Abyssinian'
(풀이1)
= [''.join(filename.split('_')[:-1]) for filename in txt.split('\n')] lst
10],lst[810:820] lst[:
(['Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian'],
['BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair'])
(풀이2)
def f(filename):
*name, _ = filename.split('_')
return ''.join(name)
= [f(filename) for filename in txt.split('\n')] lst
10],lst[810:820] lst[:
(['Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian'],
['BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair'])
my answer
= [''.join(txt.split('\n')[i].split('_')[:-1]) for i in range(len(txt.split('\n')))] lst
10],lst[810:820] lst[:
(['Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian'],
['BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair',
'BritishShorthair'])
2
. 그림파일에는 총 몇가지 종류의 고양이와, 몇가지 종류의 강아지가 있는가?
note: 고양이사진은 대문자로 시작하고, 강아지 사진은 소문자로 시작한다.
note: 12종의 고양이, 25종의 강아지가 있음
0].isupper() for s in set(lst)].count(True) # 고양이 12 [s[
12
0].isupper() for s in set(lst)].count(False) # 강아지 25 [s[
25
my answer
len([i for i in set(lst) if i[0].isupper()])
12
len([i for i in set(lst) if i[0].islower()])
25
3
. 아래는 1번의 결과로 얻어진 lst의 첫 10개의 원소와 마지막 10개의 원소이다.
10], lst[-10:]
lst[:
'Abyssinian',
(['Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian',
'Abyssinian'],
'yorkshireterrier',
['yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier',
'yorkshireterrier'])
적당한 변환을 정의하여 lst를 아래와 같이 바꾸어라.
10], lst2[-10:] # 바뀐 lst
lst2[:'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat', 'cat'],
(['dog', 'dog', 'dog', 'dog', 'dog', 'dog', 'dog', 'dog', 'dog', 'dog']) [
(풀이1)
= {'cat':[s for s in set(lst) if s[0].isupper()], 'dog': [s for s in set(lst) if not s[0].isupper()]}
dct = [k for l in lst for k,v in dct.items() if l in v] lst2
(풀이2)
def f(fname):
return 'cat' if fname[0].isupper() else 'dog'
= [f(fname) for fname in lst] lst2
my answer
= []
lst2 for j in range(len(lst)):
if [lst[l][0].isupper() for l in range(len(lst))][j] == True:
'cat')
lst2.append(else:
'dog') lst2.append(
4
. txt에는 강아지사진과 고양이사진이 모두 몇장씩 들어있는가?
## 출력예시
'dog': 4990, 'cat': 2403} {
for k in ['dog','cat']} {k:lst2.count(k)
{'dog': 4990, 'cat': 2403}
my answer
너무 길게 코드를 짰다.. 비.효.율.적.
'dog':sum((lst2[i] == 'dog' for i in range(len(lst2)))),
{'cat':sum((lst2[i] == 'cat' for i in range(len(lst2))))}
{'dog': 4990, 'cat': 2403}
5
. txt에 각 종별로 몇장의 사진이 있는지 조사하라.
## 출력예시
'beagle': 200,
{'scottishterrier': 199,
'newfoundland': 200,
'Birman': 200,
'Bombay': 200,
'pug': 200,
'germanshorthaired': 200,
'samoyed': 200,
'Sphynx': 200,
'englishsetter': 200,
'Bengal': 200,
'MaineCoon': 200,
'Persian': 200,
'boxer': 200,
'staffordshirebullterrier': 191,
'Siamese': 200,
'bassethound': 200,
'wheatenterrier': 200,
'englishcockerspaniel': 200,
'Ragdoll': 200,
'yorkshireterrier': 200,
'EgyptianMau': 200,
'BritishShorthair': 200,
'keeshond': 200,
'RussianBlue': 200,
'saintbernard': 200,
'americanbulldog': 200,
'Abyssinian': 203,
'leonberger': 200,
'greatpyrenees': 200,
'japanesechin': 200,
'pomeranian': 200,
'chihuahua': 200,
'shibainu': 200,
'americanpitbullterrier': 200,
'miniaturepinscher': 200,
'havanese': 200}
for k in set(lst)} {k:lst.count(k)
{'greatpyrenees': 200,
'americanbulldog': 200,
'englishcockerspaniel': 200,
'japanesechin': 200,
'boxer': 200,
'Sphynx': 200,
'havanese': 200,
'saintbernard': 200,
'samoyed': 200,
'yorkshireterrier': 200,
'wheatenterrier': 200,
'chihuahua': 200,
'MaineCoon': 200,
'miniaturepinscher': 200,
'RussianBlue': 200,
'pug': 200,
'Bengal': 200,
'americanpitbullterrier': 200,
'pomeranian': 200,
'EgyptianMau': 200,
'englishsetter': 200,
'Birman': 200,
'shibainu': 200,
'germanshorthaired': 200,
'Persian': 200,
'beagle': 200,
'staffordshirebullterrier': 191,
'keeshond': 200,
'newfoundland': 200,
'Bombay': 200,
'Siamese': 200,
'BritishShorthair': 200,
'scottishterrier': 199,
'leonberger': 200,
'Ragdoll': 200,
'Abyssinian': 203,
'bassethound': 200}