파이썬 연령별정보를 문자열로 리턴하기, 문자열이면 문자열대로,정수면정수대로 리턴하기 도와주실수있을까여..
조회수 1903회
1. def generation(x):
숫자로된 나이값을 받아서 "10대"
, "20대"
, "30대"
로 문자열 리턴하는 함수를 만들어야해요..
def generation(x):
return(int(age)+"대")
여기가 문제인데 아직 age
값을 받지도 않은 이 generation
함수가 이렇게될까요?
age=int(input())
나이는 정수로 받아야할거같아서 int
를 사용했습니다.
2. sum(a,b):
a
, b
가 문자열이면 문자열을 더한값, a
, b
가 정수라면 더한값을 리턴해야합니다
제가 여러가지 방법을 시도해 봤는데 조건문을 쓰면 한줄만에 코드를 넣지 못하고..
return "x"+"y"
이런식이면 str은 문자열은 더할수없다고 뜨고 ㅠ
뒤에 정수 int()
쓰면 여기선또 타입이문제라고하는데 어떻게 이걸 한줄로 하쥬..
접근방법이 뭔가 틀린거겠죠..
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
파이썬은 동적타입결정 언어입니다.
즉 실행때 타입이 결정되는 언어로 실행해보기전까진 무슨 타입인지 알 수 없습니다. 이것은 때론 파이썬의 큰 단점으로 작용합니다.
In [73]: a = 'aaa' In [74]: b = 'bbb' In [75]: a + b Out[75]: 'aaabbb' In [76]: n1 = 10 In [77]: n2 = 20 In [78]: n1 + n2 Out[78]: 30 In [84]: a Out[84]: 'aaa' In [85]: a.__add__('nnnnn') Out[85]: 'aaannnnn' In [86]: n1 Out[86]: 10 In [87]: n1.__add__(30) Out[87]: 40
파이썬에서는 + 호출시
__add__
를 호출합니다.사실 파이썬은 꽤 어려운 언어입니다. 자료형도 없고 대화식 화면에서 뚝딱뚝딱하면 결과가 나오니 다루기 쉬운언어처럼 보일뿐이지 실상은 알아야 할 부분이 많습니다. 그 중 대표적인 것이 magic method들입니다.
파이썬은 연산자 오버로딩이 가능하므로 꼭 magic method들에 대해 알고 있어야 합니다. 이 부분은 파이썬 공식 도움말을 참조해보시기 바랍니다.
즉 위에서 보듯이 문자열이나 정수형이나 모두
__add__
를 구현하고 있으므로 그냥 + 로 더하면 됩니다.In [80]: def sum2(var1, var2): ...: return var1 + var2 In [81]: sum2(1, 2) Out[81]: 3 In [82]: sum2('aaa', 'bbb') Out[82]: 'aaabbb'
자 그리고 첫번째 질문은 숙제 같군요?
상기의 요구사항은 간단한 경우이므로 간단히 한줄짜리 람다로 구현할 수 있습니다.
단 한줄에 불과합니다. 분석해보시기 바랍니다.
In [67]: generation = lambda x:'{}대'.format(int(x / 100 * 10) * 10) if x > 9 else '10대이하' In [68]: generation(17) Out[68]: '10대' In [69]: generation(27) Out[69]: '20대' In [70]: generation(7) Out[70]: '10대이하'
- 네 맞아요 첫번째 질문은 숙제였습니다. 머리로는 이게 ()안에 숫자가들어가고 몇대째인지 알아야하니 ()+"대"라고 생각해버렸어요. 그러기 자꾸 오류가 나오더라고여 format함수를 이렇게 쓸수 있구나 다시한번 깨닫게해주셔서 감사합니다. 좀더 기초를 탄탄히 다져놔야겠다는 생각이듭니다! 알 수 없는 사용자 2019.4.3 18:41
- 정답은 이거였네요..```return str((x//10)*10)+‘대 ``` 같은값을 원하더라도 다양한식으로 짤수있는게 역시 묘미인것같습니다. 알 수 없는 사용자 2019.4.3 18:46
- 아 // 로 몫을 구해도 됩니다. 오히려 정수만 구하는 형태보다 더 효율적일 수 있습니다. 정영훈 2019.4.4 00:29
- 아 어차피 몫을 구해도 range(1:10) 까지의 정수밖에 안나오겠군요 오.. 덕분에 배웠습니다. 알 수 없는 사용자 2019.4.4 00:33
댓글 입력