[컴퓨터 공학 기본과 파이썬] Problem Solving

2022. 5. 31. 21:18AI/Codestates

728x90
반응형

컴프리헨션 ( Comprehension )

- 한 줄로 파이썬 기능을 구현할 수 있는 기능

- 코드 간소화를 위해서 사용되고 직관적이면 속도도 빠름

- 컴프리헨션 내에서 여러 조건이 중첩되는 경우 가독성이 떨어짐

- 조건문에 따라 컴퓨터에 사용되는 메모리에 영향을 줄 수  있음

# 기본 반복문 사용
numbers = [1, 2, 3, 4]
squares = []

for n in numbers:
  squares.append(n**2)
  
# 컴프리헨션 사용
numbers = [1, 2, 3, 4]
squares = [n**2 for n in numbers]
# 기본 반복문과 조건문 사용
list_a = [1, 2, 3, 4]
list_b = [2, 3, 4, 5]

common_num = []

for a in list_a:
  for b in list_b:
    if a == b:
      common_num.append(a)

# 컴프리헨션 사용
list_a = [1, 2, 3, 4]
list_b = [2, 3, 4, 5]

common_num = [a for a in list_a for b in list_b if a == b]
# 딕셔너리 컴프리헨션
test = {'A': 5, 'B': 7, 'C': 9, 'D': 6, 'E': 10} 

test = {na:test for na,test in test.items() if na != 'E'}

지역변수와 전역변수란?

▶ 지역변수 

- 해당 변수가 포함된 함수 안에서만 수정하고, 읽을 수 있음

- 지역변수는 이름이 같더라도, 소속된 함수가 다르면 다른 변수로 취급함

 일반적인 전역변수

하나의 파이썬 파일 전체에서 값을 읽을 수 있음 되도록이면 함수 안에서 사이트이펙트 및 가독성을 위해 값을 수정하지 않도록 하는게 유리

■ global 전역변수

일반 전역변수와 다른 점은 변수가 생성되는 시점만 다름

 

구문 및 예외처리

for ~ else 문

# for ~ else 문
# else문의 역할: 반복(for)문에서 break가 발생하지 않았을 경우의 동작을 else문에 적어준다.
for i in range(3):
  print('loop : ', i) # 1) 루프반복수행
else : 
  print('break가 실행되지 않았습니다.') # 2) else 구문 추가수행

try ~ except 문

def my_divide():
    try:
        # 문제가 없을 경우 실행할 코드
        x = input('분자의 숫자를 입력하세요 ~ ')
        y = input('분모의 숫자를 입력하세요 ~ ')
        return int(x)/int(y)
    except:
        # 문제가 생겼을 경우 실행할 코드
        return '나누기를 할 수 없습니다'

 try ~ except ~ else 문

# except문이 실행되지 않았을 경우 else 문이 실행
def disneyland():
    try:
	    age = int(input("나이를 입력해주세요: "))
    except:
        print("숫자로 나이를 입력해주세요.")
    else:
        # 3세 미만은 공짜
        if age < 3:
            fee = 0
        # 3세~9세: 50,000
        elif age >= 3 and age < 10:
            fee = 50000
        else:
            fee = 100000
        return fee

 try ~ except ~ finally 문

# 오류 발생 유무와 관계없이 특정 코드를 무조건 실행 시킴
def disneyland():
    try:
	    age = int(input("나이를 입력해주세요: "))
    except ValueError as e:
        print("숫자로 나이를 입력해주세요.")
        print(e)
    else:
        # 3세 미만은 공짜
        if age < 3:
            fee = 0
        # 3세~9세: 50,000
        elif age >= 3 and age < 10:
            fee = 50000
        else:
            fee = 100000
        return fee
    finally:
        print("디즈니 랜드에 오신 것을 환영합니다~!")

▶ raise 구문

raise Exception(’안내 문구')

a = '1'

if type(a) != 'int':
    raise Exception('a must be int type') # raise Exception

assert 구문

assert 조건식, 조건식이 False인 경우 출력되는 메시지

 

728x90
반응형