Study/class note

python / 코드 값 구하기(ord() ), 문자 구하기(chr() ), 문자열로 된 식 실행(eval), 한 줄 짜리 함수(lambda), 인자 바꾸기(map)

chanzae 2021. 12. 29. 15:12

129 문자 코드값 구하기(ord)

파이썬 내장함수 ord()는 문자를 컴퓨터가 인식하는 코드값으로 변환함.

예제: A ----------인코딩---------> 65

(인코딩 : 사람이 알아볼 수 있는 언어를 컴퓨터가 알아볼 수 있는 숫자로 변환)

# 알파벳 대문자를 출력하시오
import string
print(string.ascii_uppercase)     # ABCDEFGHIJKLMNOPQRSTUVWXYZ

# 알파벳 A를 인코딩하시오. 즉 컴퓨터가 인식하는 숫자로 변경하시오.
print(ord('A'))   # 65

문제391. 위의 string.ascii_uppercase과 ord() 함수를 이용해서 아래와 같이 출력되게 하시오.

A -----> 65
B -----> 66
C -----> 67
    :
    :
X -----> 88
Y -----> 89
Z -----> 90

import string

for i in string.ascii_uppercase:
    print(i,'----->',ord(i))

 

 

130 코드값에 대응하는 문자 얻기(chr)

파이썬 내장함수 chr()은 ord() 함수의 반대기능을 수행

chr()의 인자로 정수값을 입력하면 이 정수값이 해당하는 문자를 리턴함.

print(chr(65))   # A

문제392. 아래와 같이 결과를 출력하시오.

65 ----> A
66 ----> B
67 ----> C
    :
    :
88 ----> X
89 ----> Y
90 ----> Z

for i in range(65,91):
    print(i,'---->',chr(i))

 

 

131 문자열로 된 식을 실행하기(eval‎‎)

코드를 작성하다보면 파일에서 읽은 수식이나 문자열을 그대로 실행해야하는 경우가 있음.

예를 들어 '2+3'과 같이 두개의 숫자를 더하는 문자열을 텍스트파일에 읽어 이를 실행하여 이 수식의 결과인 5를 구하는 경우.

a = '2+3'
print(a)    # 2+3 : a변수에 들어있는 2+3 문자열이 그대로 출력됨
print(eval(a))  # 5 : 2+3 수식을 계산한 결과 출력

문제393. 아래의 결과를 출력하시오

a = '34+256-71*34'
print(a,'=',eval(a))

문제394. 아래의 리스트의 숫자를 뽑아내서 아래의 문자열을 생성하시오.

34 + 22 + 45 + 27 + 31 + 33 + 55 

# rstrip 사용 
a = [34,22,45,27,31,33,55]
b = ''
for i in a:
    b += str(i)+'+'
    
b = b.rstrip('+')
print(b)

# join 사용
a = [34,22,45,27,31,33,55]
a2 = map(str,a)   # map(함수명, 리스트명) : 리스트의 요소들을 함수에 적용함.
a3 = '+'.join(a2)  # join이라는 함수가 리스트의 요소들의 문자형이어야지만 수행됨
print(a3)

문제395. 아래의 결과를 출력하시오.

34 + 22 + 45 + 27 + 31 + 33 + 55 = 247

a = [34,22,45,27,31,33,55]
a2 = map(str,a)
a3 = '+'.join(a2)
print(a3,'=',eval(a3))

 


132 이름없는 한줄짜리 함수 만들기(lambda)

파이썬에서 함수를 정의하는 방법은 일반적으로 다음과 같음.

# def 함수이름(입력매개변수):
#    실행코드
#    return

함수를 만들때는 위와 같이 함수의 이름을 주고 생성하여 호출시킴.

이름을 주고 함수를 생성하는 이유는 함수를 한 번 만들면 다음부터는 이름만 가지고 함수를 호출하면 되기 때문.

 

lambda는 이름없이 함수를 생성하는 코드.

이름을 주지 않는 이유는 이 함수는 단 한번만 실행하고 그 다음에는 호출할 일이 없기 때문.

k = lambda a,b:a+b
print(k(2,3))

문제396. 아래의 함수를 그냥 이름 없는 한줄짜리 함수로 생성하시오.

# 함수
def odd_func(a):
    if a%2 == 0:
        return '짝수입니다.'
    else:
        return '홀수입니다.'
print(odd_func(3))

# lambda로 생성
k = lambda a: '짝수입니다.' if a%2 ==0 else '홀수입니다.'
print(k(3))

ㅇlambda로 if문을 구성하는 방법 : lambda 입력매개변수 : 실행문 if 조건 else 실행문

 

문제397. 아래의 함수를 lambda로 구현하시오.

# 함수
def high_income(a):
    if a >= 3000:
        return '고소득자입니다.'
    else:
        return '일반소득자입니다.'
print(high_income(3500))   #고소득자입니다.

# lambda로 생성
k = lambda a: '고소득자입니다.' if a >=3000 else '일반소득자입니다.'
print(k(4000))   #고소득자입니다.

문제398. 아래의 함수를 lambda로 구현하시오.

힌트 : lambda x: x**10 if x<2 else (x**2 if x<4 else x+10)

# 함수
def high_income(a):
    if a >= 3000:
        return '고소득자입니다.'
    elif a >= 2000:
        return '중간 소득자입니다.'
    else:
        return '일반 소득자입니다.'
print(high_income(2500))  #중간 소득자입니다.

# lambda 생성
k = lambda a : '고소득자입니다.' if a >=3000 else ('중간 소득자입니다.' if a>= 2000 else '일반 소득자입니다.')
print(k(2000))  # 중간 소득자입니다.

 

 

133 인자를 바꾸어 함수를 반복 호출하여 결과값 얻기(map)

파이썬 내장함수 map()은 리스트 A와 함수 f가 주어지면 리스트 A의 요소를 함수 f에 입력해서 출력하는 결과를 간단하게 출력해줌.

# 문법
# map(함수명, 함수에 제공할 매개변수 값들)

result = map(str, [1,2,3,4,5])
print(list(result))   # map으로 변환된 결과를 보려면 list로 둘러줘야 함

파이썬 내장함수를 넣어도 되고 함수를 만들어서 넣어도 가능함.

def gop(x):
    return x*x

result = map(gop,[1,2,3,4,5])
print(list(result))   #[1, 4, 9, 16, 25]

문데399. 아래의 a리스트에 map함수를 적용해서 아래의 결과가 나오게 하시오.

(3000 이상이면 1, 아니면 0이 되게 하세요)

a = [4000,5000,2000,3500,1000]
result = map(lambda x: 1 if x >= 3000 else 0, a)

print(list(result))   #[1, 1, 0, 1, 0]
result.count()

 

반응형