str 정수값 감싸기가 잘이해가 안됩니다.

조회수 296회
print(str(len(hope))) # 글자수 세기
print(len(hope))

위에 두 문장 모두 잘 작동하는 데

print("생성된 비밀번호 :" + cut1[:3] + str(len(cut1)) + str(cut1.count("e")) + "!")  #cut1은 문자열(?) 변수

이문장은 왜 str이 있어야 작동하나요?

정수변수는 무조건 str로 감싸줘야하나요?

2 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    + 연산때문입니다.

    a = "123" + 123
    
    a = 123 + "123"
    

    위의 두 연산은 각기 다른 에러를 발생 시킵니다. 문자열과 숫자는 서로 더하기 연산이 불가능하기 때문인데요. 문자열 더하기는 사용하신 것 처럼 두 문자열을 합쳐주는 역할을 수행합니다.
    print 함수에서 문자들을 이어 문자열을 만들어 주고싶을 때는 모두 str로 만들어 더하기 연산을 수행해야 합니다. 혹은 f-string을 이용할 수 도 있습니다.

    print(f"생성된 비밀번호 :{cut1[:3]}{len(cut1)}{cut1.count("e")}!")
    

    f-string을 사용하실 때는 문자열 더하기 연산이 아니기 때문에 문제를 일으키지 않습니다.(물론 내부적으로 사용됩니다)

    • 아하... 서로 다른 것을 더해서 이런거라서 그런거군요. 자세한 설명 감사합니다! 2022.10.5 13:28
  • 서로 다른 타입끼리는 더할 수 없습니다.

    len() => int
    'e' => str
    
    a = 'qeasdf;llaj'
    b = len(a)
    print(type(a))
    print(type(b))
    
    • 다른 타입이라는 걸 인지를 못했네요 감사합니다! 2022.10.5 13:29

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)