Python
20210106_Python 입문4, 흐름제어 조건문, 반복문, List comprehension(리스트 컴프리핸션)
Today Tips : vscode 단축키
파라미터 정보 힌트 : ctrl + shift + space
함수 위에서 쓰거나 함수 괄호 안에 커서 두고 사용
퀴즈 보충 학습
-
특정 문자열 추출
index 함수 를 사용하여 슬라이싱을 통해
a = 'apple' # 'pl 추출인 경우
a_idx = a.index('pl')
print(a([a_idx : a_idx+1]))
-
거꾸로 추출
reversed 함수 사용하면 list 형태로 넣어야 되고 출력도 list 형태로 나옴 만약에 그냥 문자 스타일로 출력을 원하면 슬라이싱으로
print(list(revesed()))
print a([::-1])
- 특정 문자 제거
슬라이싱(너무 손이 많이가고 시간이 많이 걸림)으로 하거나, replace 함수 사용
참고로 정규 표현식을 익혀서 사용하면 더 좋다.
a = '010-1234-1234'
import re # 레귤러 익스프레스
print(resub('[^0-9]','', a)) # 0~9는 아니다
Python 입문 04
Python 흐름제어_조건문
1. 조건문 구조
if 의 경우 True 이면 실행, False 면 통과 시킴 그리고 마지막에 남은 것들의 실행 문은 else로 만들수 있다.
- 기본 형식 (if , else)
주의) 콜론 :
잘 찍을 것!
if True:
print('OK')
else:
print("No")
- 다중 조건문(elif)
뭐랄까 갈래길 같은 느낌임, 어떤 길로 보낼 건지 (if , elif 들 중에서 어디로 가게 할 것인가?)
Score = 70
if Score >= 90:
print("등급 A_Score : ", Score)
elif Score >= 80:
print("등급 B_Score : ", Score)
elif Score >= 70:
print("등급 C_Score : ", Score)
else:
print('재시험')
- 중첩 조건문(if에 들어쓰기 if)
A 조건 만족하면 B조건도 만족해?
(세세한 조건 설정이라고 볼 수 있겠다.ex. '1단계-2단계-3단계')
age = 30
height = 175
if age >= 20:
if height >= 170:
print("신체검사 1등급_현역판정")
elif height >= 160:
print("신체검사 2등급_현역판정")
else:
print("신체검사 3등급_공익판정")
else:
print('20세 이상만 지원 가능합니다.')
2. 판단
-
참 :
"내용"
,[내용]
,(내용)
,{내용}
,True
,1(숫자)
-
거짓 :
""
,[]
,()
,{}
,False
,0(숫자)
3. 산술 연산자
- 예전에 배운 것
+
: 더하기-
: 빼기*
: 곱하기/
: 나누기 (몫 소수점 까지 모두)//
: 나누기(몫 정수 까지)%
: 나누기 (나머지)**
: 제곱(지수)
4. 관계 연산자
>
: 초과 ,>=
: 이상<
: 미만 ,<=
: 이하==
: 같다,!=
: 같지 않다
5. 논리 연산자
and
: 모두 만족 -> True 반환or
: 하나라도 만족 -> True 반환not
: Bool(판단) 을 반대로 해서 반환
6. 산술, 관계, 논리 연산자 우선순위
- 산술 > 관계 > 논리 순서로 적용
print(3 + 7 > 0 and not 7 + 5 == 12)
# 3 + 7 , 7 + 5 먼저하고 관계 확인하고 논리(not , and) 확인 -> True and not True -> False
Python 흐름제어_반복문
1. while 반복문 구조
v1 = 1 # 변수 설정(증감 포인트를 만들어 주는 것)
while v1 < 11: # 조건에 맞지 않으면 빠져 나옴
print("v1 is : ", v1)
v1 += 1 # 반복문 내에서 증감이나 감소를 시켜줘야 함
2. for 반복문 구조
1) 특성과 구조
- 시퀀스 형(순서 있는 것)-> 문자열, 리스트, 튜플, 집합, 사전 가능
- iterable 리턴 함수 : range, reversed, enumerate, filter, map, zip -> 반복문에서는 튜플 리스트 등의 자료 변환이 필요 없지만 다른 곳에서는 자료 변환이 필요함 (ex. Print()사용시 의도하지 않게 나옴)
in
을 사용해서 특정 변수내에서 값 불러오기 가능
range
함수 : range 함수 0부터 해당 숫자 미만의 정수로 반환 (단, 반복문에서가 아닌 경우 자료변환 필요),range(x, y)
에서 시작값X, Y미만의 끝값 설정
for v2 in range(10):
print('v2 is : ', v2)
for v3 in range(1, 11):
print("v3 is : ", v3)
2) 출력형태
- 일반 형식인 경우 -> 한 글자 씩 반환
word = "lastchance"
for s in word:
print("Word : ", s)
- list 형식인 경우 -> 리스트의 값 하나씩 반환
names = ['Kim', 'Park', 'Cho', 'Choi', 'Yoo']
for n in names:
print("My last name is : ", n)
- dict 형식인 경우 -> 형식에 따라 다름
my_info = { "name": "Kim", "age": 33, "city": "Seoul"}
# 기본 dict 변수 -> 키 반복
for key in my_info:
print("my_info", key)
# dict 변수의 values함수 -> 값 반복
for key in my_info.values():
print("my_info", key)
# dict 변수의 keys함수 -> 키 반복
for key in my_info.keys(): # 키
print("my_info", key)
# dict 변수의 items합수 -> 키, 값 세트 반복
for k, v in my_info.items():
# items 는 가져올 것이 키와 값 2개라서 k , v 두개로 해놔야 함
print("my_info", k, v)
3) for - else 문
- for 문이 정상적으로 수행 된 경우 else 블럭 수행 (즉, 변수 안에 아무것도 없고 모두 실행 된 경우 할일?)
numbers = [1, 3, 45, 7, 30, 24, 14, 2, 33, 15, 15, 84, 26, 18]
for num in numbers:
if num == 2:
print("found : 2!")
else:
print("not found : 2!")
else:
print("not found 33.....")
3. break 문, continue 문
1) break 문
- 의도한 작업이 끝났음에도 출력을 하는 경우가 생겨 비효율적 -> 반복에서 빠져나오기 위해 사용
numbers = [1, 3, 45, 7, 30, 24, 14, 2, 33, 15, 15, 84, 26, 18]
for num in numbers:
if num == 2:
print("found 2")
break
else:
print("not found 2")
2) continue 문
- 조건이 맞으면 생략하게 끔 하기 위해서 -> continue 사용시 for 처음으로 감 즉, pass 함
numbers = [1, 3, 45, 7, 30, 24, 14, 2, 33, 15, 15, 84, 26, 18]
for num in numbers:
if num != 2:
continue
print("found 2")
# 2가 아니면 출력 안되고 계속 넘어감
4. list comprehension (리스트 컴프리핸션)
-
리스트를 만들려는 경우 append를 사용하면 길어짐
-
길어지는 예시
numbers = []
for n in range(1, 101):
numbers.append(n)
print(numbers)
- 리스트 컴프리핸션 구조
numbers2 = [x for x in range(1, 101)] # 내부적으로 시작됨
print(numbers2)
numbers3 = [x for x in range(1, 101) if x % 2 == 1] # 조건도 붙일 수 있음
print(numbers3)
NRC , 하루 평가
오늘도 건너 뛰었다.
에휴~ 느그적 거리느라 오전 버려서 오늘은 밤새는 걸로 하고 이렇게 글 작성하고 나서 점심쯤 뛰러 갈 생각임.
어제 느그적 거린것의 결과다.
이제 슬슬 프로젝트 구상도 해야한다.
주말 쯤에 하자.
'Python' 카테고리의 다른 글
20210108_ Python 입문6, 클래스(class), 클래스의 상속, 모듈(module)과 패키지(pakage) (0) | 2021.01.09 |
---|---|
20210107_ Python 입문5, 함수,*args,**kwargs, parameter hint, lambda (0) | 2021.01.07 |
20210105_Python 입문3, 자료구조, list, tuple, dict, set (0) | 2021.01.06 |
20210104_Python 입문2, 가상환경 설정, pip, 데이터 형태, 문자,숫자 함수 등 (0) | 2021.01.05 |
20210103_Python 입문, VScode 단축키 (0) | 2021.01.04 |