TypeError: объект 'str' не вызывается?

Я никогда раньше не программировал на Python, и я взял несколько примеров из Интернета и немного отредактировал их, чтобы создать код, который находит простые числа. Однако, даже посоветовавшись с людьми, немного знающими Python, я не могу понять, в чем проблема с этим кодом. Я всегда просто получаю ошибку:

TypeError: 'str' object is not callable

для этой строки:

      if (j > i/j) : print(i, " is prime")

Вот полный код программы.

i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break
      j = j + 1
      if (j > i/j) : print(i, " is prime")
   i = i + 1

person Felix    schedule 15.06.2016    source источник
comment
Похоже, вы присвоили строку имени print.   -  person Martijn Pieters    schedule 15.06.2016
comment
Двойник здесь относится к затенению встроенного str, это тот же случай с print. Обратитесь к ответу Мартина, чтобы решить вашу точную проблему, и к обману, чтобы получить некоторое представление.   -  person Bhargav Rao    schedule 15.06.2016


Ответы (1)


В другом месте вашего кода или сеанса вы привязали строковый объект к имени print:

print = 'foo'

Теперь print(...) пытается вызвать строку вместо встроенной функции.

В интерактивном сеансе удалите имя print:

del print

В сценарии убедитесь, что вы не маскируете имя print; выберите другое имя для этой переменной.

person Martijn Pieters    schedule 15.06.2016