본문 바로가기

문제 해결

[Python] TypeError: 'str' object is not callable

import sys
input = sys.stdin.readline().rstrip()

n = int(input())
sum = 1

def factorial(i) :
    if i < 2 : 
       return 1

    return i * factorial(i-1)

print(factorial(n))

와 같이 간단한 팩토리얼 코드를 구현했는데 TypeError: 'str' object is not callable 에러가 발생했다. 구글링을 해봤더니 대부분 코랩을 초기화 하던가 새페이지를 파서 문제를 해결했는데 나는 문제가 좀 다른 듯 했다.

chatGPT한테 물어보니 코드에서 input이라는 이름을 변수로 사용했기 때문에 에러 발생했다고 한다. 기존에 사용하는 input( ) 함수에 sys.stdin.readline().rstrip()이라는 구문으로 input 함수를 덮어써서, 이후 input()을 호출하려고 할 때 str 객체가 호출 가능하지 않다는 에러가 발생했다고 한다.

따라서 input 대신 user_input을 사용하여 input() 내장 함수를 덮어쓰지 않도록 수정함으로서 에러를 해결했다.

 

< 수정 및 오류 해결 코드 >

import sys
input_user = sys.stdin.readline().rstrip()

n = int(input_user)
sum = 1

def factorial(i) :
    if i < 2 :
       return 1

    return i * factorial(i-1)

print(factorial(n))