본문 바로가기

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 , 하루 평가

오늘도 건너 뛰었다.
에휴~ 느그적 거리느라 오전 버려서 오늘은 밤새는 걸로 하고 이렇게 글 작성하고 나서 점심쯤 뛰러 갈 생각임.
어제 느그적 거린것의 결과다.
이제 슬슬 프로젝트 구상도 해야한다.
주말 쯤에 하자.