본문 바로가기

공부기록/파이썬

[파이썬][문제] map(int, input().strip().split(' '))

프로그래머스 문제를 푸는데

코드업에서는 a랑 b를 공백으로 띄어서 입력받을 때

a,b = input().split() 

이런식으로 했었는데 여기서는 map 함수를 쓰길래 map 함수는 어떤 걸 하는지 궁금했다. 

 

 

a, b = map(int, input().strip().split(' '))

 

 

input().strip()은 사용자로부터 받은 입력뒤에 공백이 있으면 제거하고, split()은 문자열에서 파이썬 리스트 만들 때 사용되는데 공백을 기준으로 문자열을 나눈다.

map() 함수는 2개의 파라미터를 받는데 map(받을 데이터 타입, 받을 데이터) 받은 데이터를 받은 데이터 타입으로 반환한다. split() 이렇게 해도 default 값이 공백으로 설정되어 있음. 

 

예전에 input().split() 만 알 때는 그 int로 설정할 때 항상 

a,b = input().split()
a = int(a)
b = int(b)

이런식으로 하나하나 바꿔주었었는데

 

map 함수를 이용하면

a, b = map(int, input().strip().split(' '))

 

한줄에 쓸 수 있다는 장점이 있다.

 


[프로그래머스]

대소문자 바꿔서 출력하기

 

 

내 풀이

string = input()

for i in range(0, len(string)):
    a = string[i]
    b = a.upper()
    if a == b:
        print(string[i].lower(),end = "")
    else :
        print(string[i].upper(),end = "")

 

나는 이렇게 했는데

다른 사람의 풀이..

print(input().swapcase())

 

여기서 swapcase() 함수는 대소문자는 소문자로, 소문자는 대문자로 바꿔주는 기능을 한다. 

 

한 줄로 끝내는 걸 보고 이런식으로도 사용할 수 있구나 라는 걸 알게 되었음.

str = input()
for i in str:
    if i.islower():
        print(i.upper(),end='')
    else:
        print(i.lower(),end='')

 

이런식으로 islower 함수도 있고..

 


 

문자 형식과 관련된 함수에는 

isupper : upper(대문자) 형식이면 True, 아니면 False

islower : lower(소문자) 형식이면 True, 아니면 False

istitle : title(첫문자만 대문자, 나머지는 소문자일 때) 형식이면 True, 아니면 False

isspace : 공백일 경우 True, 아니면 False

 

숫자형 string에 적용할 수 있는 함수에는 (3개가 미묘하게 다름)

isnumeric : 숫자형일 경우 True, 아니면 False (제곱근, 분수는 True, 특수문자가 포함되면 False)

isdecimal : 숫자일 경우 True, 아니면 False(0~9까지의 수로 이루어져있니?) (문자열이 int로 변환 가능하면 True)

isdigit : 숫자일 경우 True, 아니면 False (문자열이 숫자처럼 생겼으면 True, 아니면 False)

 

문자열에 적용가능한 함수에는

isidentifier : 함수 대입 string이 식별가능하면(숫자로 시작하면 X) True, 아니면 False

isalnum : 문(영어, 한글, 숫자)로 이루어진 형태일 때 True, 아니면 False

isascii : 입력된 문자가 아스키 형식을 만족하면 True, 아니면 False

isalpha : 문자(영어, 한글 등)만 들어있을 경우 True, 아니면 False

isprintable : 문자열이 출력 가능하면 True, 아니면 False

 

 


 

이건 다른 문제였는데 나는 print(a,"+",b) 이런식으로 썼는데 저렇게 쓰는 방법도 있었는데 까먹고 있어서 다시 한번 상기 시키고자 추가 했음.

a,b = map(int, input().strip().split(' '))
print(f"{a} + {b} = {a + b}")​

 

 

앞으로도 문제 풀면서 헷갈리는 부분이나 몰랐던 부분 있으면 조금씩 올릴 예정이다