| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- vscode
- sql
- channels
- re-id
- REDIS
- 2주차
- Class
- 마스킹
- Git
- js
- WebSocket
- WIL
- resnet50
- 1주차
- 정보처리기사실기
- poetry
- 프로젝트
- 가상환경
- 장고
- Commpot
- 프로그래머스
- 파이썬
- 정보처리기사
- WHERE절
- github
- 백준
- 개발일지
- 채팅
- 미니프로젝트
- Today
- Total
개발일기
#2 파이썬 연습 (for문, if문, 함수) 본문
content
- 새로 알게된 점 (복습!)
- 내맘대로 변형, 적용하기
- 느낀점
for 문, if 문, 함수
for i, a in enumerate(people):
name = a['name']
age = a['age']
print(i, name, age)
if i >3:
break
#이 구문의 장점: 데이터 개수가 커지면, 다 출력해보지 않고도 출력이 어떻게 되는지 알 수 있다. 디버깅하기 좋음!
#enumerate : 요소의 순서를 적어주는 enumerate
출력값:
0 bob 20
1 carry 38
2 john 7
3 smith 17
4 ben 27
def check_gender(pin):
if int(pin.split('-')[1][:1]) % 2 ==0:
print('여성')
else:
print('남성')
check_gender('151010-1310304')
#남성으로 출력
주민등록번호로 성별 확인하는 함수~
변형하고 시도하기 #1
위 코드를 이렇게 한번 바꿔보았습니다!
def check_gender(pin):
pin = int(pin[7:8]) #슬라이싱을 이용해서 pin값 지정
if pin % 2 ==0:
print('여성')
else:
print('남성')
check_gender('768387-2310304')
#여성으로 출력
내 맘대로 적용하기 #2 다른 새로운 문제로도 도전해보았어요!
나라명에 따라 hashtag를 뽑아보는 것을 for문과 if문으로 도전해보았습니다!
떠나보조 프로젝트를 참고하여 문제를 만듦! (by 떠나보조 팀원)
시도한 점:
해시태그는 리스트인데.. 리스트 + 문자열이 가능하지 않으므로,
리스트를 문자열로 바꾸거나 문자열을 리스트로 바꿔주어야 한다..!
sol1) 문자열을 리스트로 바꿔주기
countries = [
{'name': '인도네시아', 'cityn': '발리', 'hashtag':['#스노클링', '#서핑', '#나시고랭']},
{'name': '일본', 'cityn': '교토', 'hashtag':['#맛집투어', '#금각사', '기모노']},
{'name': '한국', 'cityn': '속초', 'hashtag':['#속초아이', '#울산바위', '#물회']},
{'name': '미국', 'cityn': '하와이', 'hashtag':['#와이키키', '#해변', '#포케']},
{'name': '일본', 'cityn': '오사카', 'hashtag':['#도톤보리', '#난바', '#타코야키']},
]
for country in countries:
name = country['name']
city = country['cityn']
htg = country['hashtag']
if name == '일본':
print(*htg + ['입니다']) #리스트 형식
elif name == '한국':
print(*htg + ['입니다'])
else:
print(*htg + ['입니다'])
출력값:
#스노클링 #서핑 #나시고랭입니다
#맛집투어 #금각사 기모노입니다
#속초아이 #울산바위 #물회입니다
#와이키키 #해변 #포케입니다
#도톤보리 #난바 #타코야키입니다
여기서 *htg는 리스트 형식에서 대괄호 [ ] , 작은 따옴표 ' ' 을 제외하고 데이터를 뽑아낸다. (unpacking 기능)
하지만 여전히 형식은 리스트! (리스트라는 걸 간과하고.. 계속 왜 안되지.. 하고 있었던 우리 ㅠ)
그래서 print(*htg + '입니다.')로 하면 오류메세지가 나온다..!! 이유는, 리스트 + 문자열이어서 안 된다.
sol2) 리스트를 문자열로 바꿔주기
countries = [
{'name': '인도네시아', 'cityn': '발리', 'hashtag':['#스노클링', '#서핑', '#나시고랭']},
{'name': '일본', 'cityn': '교토', 'hashtag':['#맛집투어', '#금각사', '기모노']},
{'name': '한국', 'cityn': '속초', 'hashtag':['#속초아이', '#울산바위', '#물회']},
{'name': '미국', 'cityn': '하와이', 'hashtag':['#와이키키', '#해변', '#포케']},
{'name': '일본', 'cityn': '오사카', 'hashtag':['#도톤보리', '#난바', '#타코야키']},
]
for country in countries:
name = country['name']
city = country['cityn']
htg = country['hashtag']
if name == '일본':
print(' '.join(htg) + ('입니다')) #문자열
elif name == '한국':
print(' '.join(htg) + ('입니다'))
else:
print(' '.join(htg) + ('입니다'))
join을 이용해 리스트를 문자열로 바꿔줄 수 있다.
(' ').join(htg)은 공백을 리스트의 각 문자열 사이에 넣어서 출력하는 것이다.
즉, 구분자 문자열과 문자열 리스트의 요소를 연결하여 문자열로 만든다.
이해를 돕기 위해 :
('!').join(htg) 를 하면, 출력값은 #스노클링!#서핑!#나시고랭
if문 심화
- if 문 뒤에 오는 값이 True 이면 통과
- False이면 통과하지 않음
- if 문은 기본적으로 다음에 오는 구문이 True, False인지 boolean으로 판단..
- 결과값도 boolean으로 나온다!
- 비어있는 스트링, 빈 리스트, 0는 분기문에서 False이다.
- print(bool[""])은 True! 리스트 안에 빈 스트링 ""이 있기 때문에 빈 리스트가 아니다.
- if True or False and "" or "a" and [] 이렇게 다른 걸로도 True, False를 나타낼 수 있다.
- all()이면 요소들이 모두 True일 때 True 리턴
- any()이면 요소들 중 하나라도 True이면 True 리턴
이왕 정리하는 것.. 이것까지도 이해하고 넘어가자!
패킹과 언패킹
- 리스트 패킹과 언패킹은 *
- 딕셔너리 패킹과 언패킹은 **
#리스트 언패킹
numbers = [1,2,3,4]
print(add(*numbers)) #10 출력, print(add(1,2,3,4))과 동일
#딕셔너리 언패킹
def sample(**kwargs):
print(kwargs)
sample_dict={"key":"value", "key2":"value2"}
sample(**sample_dict) #sample(key="value", key2="value2")과 동일
#출력 {'key': 'value', 'key2': 'value2'}, type 여전히 딕셔너리..
profile["name"]=kwargs.get("name","-")
# .get은 딕셔너리 안에 해당되는 key가 있을 경우에는 그 키에 대한 value를 보여주고, 특정 key가 존재하지 않는다면, 뒤에 지정해준 값을 넣어주게 됩니다.
def sample(a,b,*args,**kwargs): #같이 쓸 수 있음
print(a)
print(b)
print(args)
print(kwargs)
sample(1,2,3,4,test="a", key="abc", test_key="test_value")
# 처음 1,2는 a, b에 해당되고.. 3,4는 args, 나머지가 kwargs에 해당되어 출력된다!
# 아무 데이터나 넣어도 출력된다. 함수를 짤 때 받는 값에 제한 없이 유동적으로 받고 싶으면 패킹, 언패킹 사용하면 된다!
느낀점
- 같이 고민하고 문제해결을 하니 훨씬 빠르다.
- 새로운 문제를 풀면서 리스트를 문자열로 바꿔주는 join에 대해서도, *(별표, Asterisk)에 대해서도 배우게 되었다.
- 새로운 질문을 통해 새로운 내용을 더 배워가는 순기능!! 너무 좋아!
'오늘의 공부일기 > 파이썬 공부일기' 카테고리의 다른 글
| #6 파이썬 심화 (가상환경, 코드 컨벤션, 변수 유효 범위) (0) | 2023.03.23 |
|---|---|
| #5 파이썬 연습 (map, filter, lamda, class) (0) | 2023.03.21 |
| #4 파이썬 연습 (예외처리, 파일 불러오기, 한 줄의 마법) (0) | 2023.03.21 |
| #3 파이썬 연습 (튜플, 집합, f-string) (0) | 2023.03.21 |
| #1. 파이썬 연습 (문자열, 리스트, 딕셔너리) (0) | 2023.03.20 |