알쏭달쏭 공부한거 쓰기
HW 6-튜플, 집합 추가문제 본문
https://colab.research.google.com/drive/1_GFEC96syJ778G3jcPqoR7uZb92Nu7x6#scrollTo=LSOVwVSluIks
6.7
record=(100, 121, 120, 130, 140, 120, 122, 123, 190, 125)
c=0
for i in range(1,len(record)):
if record[i]<record[i-1]:
c+=1
print(f'지난 10일 동안 전일대비 매출이 감소한 날은 {c}일입니다.')
6.11
n=[(), (1,), [], 'abc', (), (), (1,), ('a',), ('a', 'b'), ((),), '']
k=[(), (1,), [], 'abc', (), (), (1,), ('a',), ('a', 'b'), ((),), '']
for i in k:
if len(i)==0:
n.remove(i)
print(n)
교수님:
lst = [(), (1,), [], 'abc', (), (), (1,), ('a',), ('a', 'b'), ((),), '']
print('주어진 리스트:', lst)
rslt = [x for x in lst if len(x)>0]
print('빈 원소를 제거한 결과:', rslt)
6.15
n=(4, 5, 2, 3, 8, 1, 9, 0)
print(n)
for i in range(1,8):
k=n[:(-1)*i]
print(k)
교수님:
tp = (4, 5, 2, 3, 8, 1, 9, 0)
l = len(tp)
for i in range(len(tp)):
print(tp[:l-i])
6.17
1)
def a():
population_A = (100, 150, 230, 120, 180, 100, 140, 95, 81, 21, 4)
population_B = (300, 420, 530, 420, 400, 300, 40, 5, 1, 1, 1)
c,d=0,0
for i in population_A[2:]:
c+=i
for m in population_B[2:]:
d+=m
print(f'마을 A와 B에 보낼 투표용지의 개수는 각각 {c} 장과 {d} 장입니다.')
print(f'마을 A와 B에 보낼 투표용지의 개수는 각각 {sum(population_A[2:])} 장과 {sum(population_B[2:])} 장입니다.')
2)
def b():
population_A = (100, 150, 230, 120, 180, 100, 140, 95, 81, 21, 4)
population_B = (300, 420, 530, 420, 400, 300, 40, 5, 1, 1, 1)
TheoldA=sum(population_A[-4:]);oldperA=TheoldA/sum(population_A)
TheoldB=sum(population_B[-4:]);oldperB=TheoldB/sum(population_B)
print(f'마을 A와 B의 고령화 정도는 각각 {oldperA:.3f}와 {oldperB:.3f}입니다.')
6.26 다음과 같이 튜플 (m, n)을 원소로 가지는 리스트 mylist가 있다. 사용자로부터 a, b의 두 값을 입력으로 받아서 (a, b) 값을 가지는 튜플이 있을 경우 'x번째에 (a, b)원소가 있습니다.'를 출력하시오. 만일 (a, b) 원소는 없으나 (b, a) 원소가 있을 경우, '(a, b) 원소는 없으나 y번째에 (b, a) 원소가 있습니다'를 출력하시오. 만일 (a, b) 원소나 (b, a) 원소가 없을 경우에는 '이 원소는 없습니다'를 출력하시오.
sol)
m,n=[int(x) for x in input('두 정수를 입력하시오:').split()]
user=(m,n)
mylist = [(1, 2), (4, 5), (4, 2), (3, 1), (9, 4)]
if user in mylist:
print(f'{mylist.index(user)}번째에 {user}원소가 있습니다.')
elif (n,m) in mylist:
print(f'{user}원소는 없으나 {mylist.index((n,m))}번째에 {(n,m)}원소가 있습니다.')
else:
print('이 원소는 없습니다.')
교수님:
HW6.1
n1={10, 20, 30, 40, 50, 60}
n2={30, 40, 50, 60, 70, 80}
print('어느 한쪽에만 있는 원소',n1.symmetric_difference(n2))
print('첫번째에만 있는 원소',n1-n2)
DAY 7
6.4
## 6.4 다음의 코드에서 잘못된 부분은 무엇인가?
---
```
>>> t = (10, 20, 30, 40)
>>> t.append(50)
```
---> append는 리스트에 적용하는것! 튜플은 수정이 안된다.
```
>>> t = (10, 20, 30, 40)
>>> t.remove(50)
```
---위와 동일한 이유
```
>>> t = (10, 20, 30, 40)
>>> t[0] = 0
```
-튜플은 수정이 안된다.
6.8
n=(1, 2, 5, 4, 3, 2, 9, 1, 4, 7, 8, 9, 9)
s=set([])
for i in n:
if n.count(i)>1:
s.add(i)
print('중복원소는',s)
6.9
tub=(1, 2, 5, 4, 3, 2, 1, 4, 7, 8, 9, 9, 3, 7, 3)
tub=set(tub)
tub=tuple(tub)
print(tub)
6.10
tup=(1, 2, 5, 4, 3, 2, 9, 4, 7, 8, 9, 9, 3, 7, 3)
many=tup[0]
same=set()
for i in tup:
if tup.count(many)<tup.count(i):
many=i
elif tup.count(many)==tup.count(i):
many=i
same.add(many)
if len(same)==0:
print('가장 많이 나타나는 원소는:',many)
else:
print('가장 많이 나타나는 원소는:',max(same))
>이렇게 되면 many가 의 원소가 2개일때 다른 2개의 개수를 가진 원소가 same에 들어가게 되는데 이후에 갯수가 2개보다 큰 원소인경우에 many가 바뀌게 된다.
sol) 차라리 1바퀴 더 돌리면 될듯
tup=(1, 2, 5, 4, 3, 2, 9, 4, 7, 8, 9, 9, 3, 7, 3)
many=tup[0]
same=set()
for i in tup:
if tup.count(many)<tup.count(i):
many=i
for m in tup:
if tup.count(many)==tup.count(m):
same.add(m)
if len(same)==0:
print('가장 많이 나타나는 원소는:',many)
else:
print('가장 많이 나타나는 원소는:',max(same))
교수님:
print('주어진 튜플은:', tp)
set_tp = set(tp)
freq_elt = tp[0]
freq = tp.count(tp[0])
for x in set_tp:
if tp.count(x)>freq:
freq = tp.count(x)
freq_elt = x
elif tp.count(x)==freq and x>freq_elt:
freq = tp.count(x)
freq_elt = x
print('가장 많이 나타나는 원소는:', freq_elt)
6.18 다음 코드의 수행 결과를 적으시오. 이 중에서 에러가 발생하는 부분은 어느 부분인가?
>>> s1 = set('abcd')
>>> s1
(1) _{'a', 'c', 'd', 'b'}
>>> s2 = set('defg')
>>> s2
(2) {'g', 'e', 'd', 'f'}
>>> s1 == s2
(3) False
>>> s1 + s2
(4) {'a', 'c', 'd', 'b','g', 'e', 'd', 'f''}>> NO:: unsupported operand type(s) for +: 'set' and 'set',
집합에서 지원되지 않는다. 리스트는 작동함
>>> s1 & s2
(5){'d'}
6.19 다음과 같은 집합에 대한 연산을 적용할 적에, 다음 밑줄 친 부분에 들어갈 알맞은 결과는 무엇인가?
>>> s1 = {0, 1, 2, 3, 4, 5}
>>> s2 = {3, 4, 5, 6, 7}
>>> s1 & s2
(1) {3, 4, 5}
>>> s1 | s2
(2) {0, 1, 2, 3, 4, 5, 6, 7}
>>> s2 - s1
(3) {6, 7}
>>> s1 - s2
(4){0, 1, 2}
>>> s1 ^ s2
(5) {0, 1, 2, 6, 7}> symmetric_difference
>>> 2 in s1
(6) True
dts5. 2개의 문자열에 모두 포함된 문자를 출력하는 프로그램을 작성하시오.
- 구두점, 특수 문자 제외한 알파벳만 파악할 것.
- 대소문자 무시하고 판단할 것
s1='Hello, world!'
s2='how are you?'
s1=set([x.lower() for x in s1 if x.isalpha()==True])
s2=set([x.lower() for x in s2 if x.isalpha()==True])
print(s1,s2)
hap=s1.intersection(s2)
print('공통문자:')
for i in hap:
print( i, end=' ')
교수님:
st1 = input('문자열 1: ').lower()
st2 = input('문자열 2: ').lower()
for p in ' ,.:;\"\'!?':
st1 = st1.replace(p, '')
st2 = st2.replace(p, '')
rslt = set(st1) & set(st2)
print('공통 문자:',' '.join(rslt))
'파이썬 -23여름학기(ㄱㅎㅈ)' 카테고리의 다른 글
7/5 파이썬 수업-딕셔너리,객체와 클래스 (0) | 2023.07.05 |
---|---|
중간 대비-22 파이썬 족보 (0) | 2023.07.04 |
중간고사 대비-hw별 문제풀이 가능여부 및 연습 (0) | 2023.07.03 |
7/3 수업 중 작성 (0) | 2023.07.03 |
중간고사 족보 대비 (0) | 2023.07.03 |