백준 1431번을 풀면서 해당 문자열이 문자인지 숫자인지 판별할 필요가 있었다. 파이썬에서는 isalpha()와 isdigit()를 활용해서 숫자인지 문자인지 판별할 수 있다.
숫자 판별에 쓰이는 함수는 isdecimal(), isdigit(), isnumeric() 이 있다.
대체로 isdigit()를 많이 쓰는듯 하다.
문자 판별에 쓰이는 함수는 isalpha() 이다. 공백이 있는 경우, 숫자와 혼용되는 경우에는 false를 반환한다. (공식문서에 따르면 문자열 내의 모든 문자가 알파벳이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 알파벳 문자는 유니코드 문자 데이터베이스에서 “Letter”로 정의된 문자입니다. 즉, 일반 범주 속성이 “Lm”, “Lt”, “Lu”, “Ll”, “Lo” 중 하나인 문자입니다. 이것은 유니코드 표준에서 정의된 “Alphabetic” 속성과 다름에 주의하십시오.) (여기서 Lm:Modifier_Letter, Lt:Titlecase_Letter, Lu:Uppercase_Letter, Ll:Lowercase_Letter, Lo:Other_Letter)
숫자(⅔, 3²와 같은 표현도 가능)와 문자가 같이 있는 경우(공식문서에 따르면 문자열 내의 모든 문자가 알파벳과 숫자이고, 적어도 하나의 문자가 존재하는 경우 True를 돌려주고, 그렇지 않으면 False를 돌려줍니다. 문자 c 는 다음 중 하나가 True 를 반환하면 알파벳이거나 숫자입니다: c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric().) 는 isalnum() 을 사용할 수 있다. 하지만 이 경우도 공백이 포함되면 false를 반환한다.
숫자/문자의 기준이 글로만 읽었을 때는 조금 모호하게 보이는데, 알고리즘 문제 풀때는 숫자 판정은 isdigit(), 문자 판정은 isalpha()쓰면 될 듯 하다.