Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60

'str' object is not callable Почему?

31.01.2020, 18:08. Показов 7101. Ответов 21

Студворк — интернет-сервис помощи студентам
Я конечно туплю но не думал что на столько
Пишу типа Адресную книгу
При выборе действия Посмотреть мои контакты вылезает ошибка 'str' object is not callable,но контакты показываются,но и программа вылетает\завершается..
Вот код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import os
import sys
import time
print("---АДРЕСНАЯ КНИГА---")
 
def base():
    def add():
        which2 = input("Введите имя и фамилию контакта: ")
    def change():
        whatd = input("Введите действите что бы выбрать его: \nПосмотреть мои контакты\nДобавить контакт\nВвод: ")
        if whatd == "Посмотреть мои контакты":
            which = input("Нажмите Enter для входа в меню добавления или (Введите Контакты для просмотра контактов) : ")
            if which == "Контакты":
                print(contacts)
                return change()
            if which == "":
                return add()
            else:
                print("Завершение программы...")
                time.sleep(2)
                sys.exit
 
    def what():
        whatdo = input("Введите действие: \nПосмотреть мои контакты\nИзменить мои контакты\nВвод: ")
        if whatdo == "Посмотреть мои контакты":
            print("Ваши контакты:\n")
            print(contacts)
            return whatdo()
        if whatdo == "Изменить мои контакты":
            return change()
            
    contacts = {'Вадя Мусоров' : 'Телефон: 8800613461',
    'Жопа Генадьевна': 'Телефон: 7980307025',
    'Ибрагим Консервович': 'Телефон: 87297919645'}
    go = input("Введите Click что бы войти в контакты, или любое слово что-бы выйти из программы: ")
    if go == "Click":
        return what()
    else:
        print("Завершение программы...")
        time.sleep(2)
        sys.exit
 
 
            
        
 
 
 
base()
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.01.2020, 18:08
Ответы с готовыми решениями:

'Str' object is not callable
Форумчане, привет! Извлекаю текст из ссылок между тегами a. Выводится сообщение об ошибке: for i in range(depth): ...

TypeError: 'str' object is not callable
Здравствуйте! Первый раз встретился с данной ошибкой, поэтому не бейте. def log_files_check_ls(command = "ls"): #...

TypeError: 'str' object is not callable. Как исправить?
import string file = open("input.txt", "r") db = file.readlines() file.close() file = open("output.txt", "w") i = len(db) - 1 ...

21
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.01.2020, 18:24
DebikPython,
Зачем писать такую дичь с вложенными функциями (к тому же неверно вложенными), если ты не понимаешь что такое замыкания и рекурсия?
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 19:00  [ТС]
Я учусь,и пишу так как знаю)
Если ты в футбол играешь и пнешь левой ногой а тренер скажет нужно правой,ты дурак.Что ты ему ответишь?)

Добавлено через 4 минуты
Чаще замечаю что многие любят обосрать новичков а не сказать как правильнее

Добавлено через 28 минут
Разобрался сам,спасибо)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.01.2020, 19:05
Цитата Сообщение от DebikPython Посмотреть сообщение
Чаще замечаю что многие любят обосрать новичков а не сказать как правильнее
А как его сделать правильным, если он изначально неверный и бессмысленный?
Ответ: выкинь этот код и напиши все заново. И если он будет в отличие от первого иметь хоть какой-то смысл, тогда тебе и посдкажут как его подправить.

P.S. Я не понимаю на каких сферических примерах вы (так называемые новички уровня нуб 100500 степени) учитесь писать код? В Python 200 библиотек. Зайдите папку lib и откройет любой файл. Посмотрите как там оформлен код. Как написаны функции. Как оформлены классы. И не пишите вот такую дичь.

Добавлено через 2 минуты
Цитата Сообщение от DebikPython Посмотреть сообщение
Разобрался сам,спасибо)
Да нифига. Самообман.
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 19:37  [ТС]
Бессмысленный?Смысл в нем это практика,как минимум - задание из книги.Выкинь и напиши заного,гениально)Спасибо за совет так и сделаю)Новички если ты не вкурсе,это те кто только начал учить язык,и не понимает что и как нужно выстраивать.Держу вкурсе)

Добавлено через 3 минуты
Обратный вопрос,в чем смысл твоего ответа мне?)Обосрать,ну да зачем заходить в тему и сказать как правильно,лучше сказать выкинь это говно ты не знаешь не напишешь и вообще удали пайтон,да?)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.01.2020, 20:13
Цитата Сообщение от DebikPython Посмотреть сообщение
Обратный вопрос,в чем смысл твоего ответа мне?
Чтобы ты понял, что написал говнокод и его проблема не в строчке, в которой ты вызываешь строку как функцию, а в том как он вообще написан. Написан он неверно. И если совет переписать код (удалив бессмысленные вложенные функции и захардкоженные строки) для тебя не совет, тогда продоложай в том же духе, но вряд ли ты чему-то научишься.

Добавлено через 1 минуту
Цитата Сообщение от DebikPython Посмотреть сообщение
ну да зачем заходить в тему
Не тебе решать, в чью тему я буду заходить. Ты как вопрошающий здесь на птичьих правах.
1
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 20:31  [ТС]
Вырезать отдельные слова которые обретают другой смысл,гениально
Так так в чем там бессмысленные вложенные функции?Я пытаюсь сделать по заданию.
Выбрать контакт,добавить\удалить,вернуться назад,выйти из программы,что там не нужное?
У меня нет наглядного примера как писать коды,задачу гуглить я не хочу,сам писать хочу

Добавлено через 4 минуты
Цитата Сообщение от Garry Galler Посмотреть сообщение
вряд ли ты чему-то научишься.
Как я чему-то научусь если нет примера?В гугле другие задачи,там не обьясняют конкретную концепцию написания кода,что нужно сделать что бы как ты говоришь это был не говно код,а прямой и красивый,ведь по факту он вроде делает то что сказанно в задаче,я не знаю как сделать его более правильным и ровным-За советом как это сделать я и спрашиваю конкретно у людей а не у гугла,потому что знающее обьяснят как правильнее сделать
Если просто не хочешь,так не отвечай,это лишь просьба

Добавлено через 4 минуты
Цитата Сообщение от Garry Galler Посмотреть сообщение
Да нифига. Самообман.
В ошибке я разобрался,но если ты сказал А то что он кривой и не правильный,то понятно что меня это зацепит и я хочу узнать как правильно,ведь до этого момента я думал что я иду по правильному пути
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 20:32
DebikPython, тебе реально дельный совет дали - выкинь, подумай и напиши заново но более осмысленно. я написал хранитель паролей в закодированном виде с GUi все работает как хотел но код в одном файле ужасный и теперь я его переписываю как учит дзен. это поверь лучше чем 100 раз читать тему без практики. начнем. return change()? вы понимаете что это рекурсия? зачем?
Python
1
2
3
4
5
6
def change():
    ............
    ............
    if which == "Контакты":
        print(contacts)
        return change()
примерно для сравнения
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import os
import sys
import time
print("---АДРЕСНАЯ КНИГА---")
 
 
def add_cont():
    which2 = input("Введите имя и фамилию контакта: ")
    data = input("Телефон: ")
    contacts[which2] = f'Телефон: {data}'
 
        
def contact():
    print("Ваши контакты:\n")
    for k,v in contacts.items():
        print(k,v)
    print('\n')
                 
contacts = {
                    'Вадя Мусоров' : 'Телефон: 8800613461',
                    'Жопа Генадьевна': 'Телефон: 7980307025',
                    'Ибрагим Консервович': 'Телефон: 87297919645'
                    }        
 
while True:
    whatd = input("Введите действите: \nПосмотреть мои контакты -1\n\
Добавить контакт - 2\nИзменить мои контакты - 3\n>> ")
    if whatd == "1":
        contact()
    elif whatd == "2":
         add_cont()
    elif whatd == "3":
          pass # здесь вызов функции изменения которую вы уж сами напишите
    else:
        print("Завершение программы...")
        time.sleep(2)
        sys.exit()
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.01.2020, 20:37
Цитата Сообщение от DebikPython Посмотреть сообщение
Так так в чем там бессмысленные вложенные функции?
В том что так никто не делает. Вложенные функции используются для создания замыканий.

Строковые литералы типа "Введите действите что бы выбрать его: \nПосмотреть мои контакты\nДобавить контакт\nВвод: " не стоит писать внутри вызова функций и вообще внутри функций. Это и называется харкодинг, что является bad practice.
Для них создается отдельная структура данных из которой эти строки и извлекаются по необходимости.

Рекурсивные вызовы функций должны иметь смысл. Рекурсия используется для обхода вложенных структур.
Функции должны что-то возвращать, а не что-то печатать.

sys.exit - бессымысленная строчка кода которая ничего не делает.
Python
1
2
3
4
>>> import sys
>>> sys.exit
<built-in function exit>
>>>
Строки кода не должны быть длиннее 80 символов. Это называется правильный code style. PEP-8.

Дальше продолжать?

Добавлено через 4 минуты
Цитата Сообщение от DebikPython Посмотреть сообщение
Как я чему-то научусь если нет примера?
Примеры это сам Python и его встроенные библиотеки. Лучше примеров просто не найти.
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 20:42  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Дальше продолжать?
Было бы не плохо,обьяснить как правельнее сокрощать код,тк я этого не понял,и как я понял ты и имел ввиду что там куча не нужного,я не знаю как его сократить и оставить тот же функционал
Это моя первая практика после книги,до этого я не писал кодов больше 20 строк,поэтому так криво

Добавлено через 2 минуты
Спасибо за пример,но я не хочу переписывать код.Я хочу понять как писать правильно как указывал Garry"не криво"
Понять и писать правильно.К примеру даже не знаю как не функциями добавлять функционал,для каждого действия мне приходится вкладывать функцию,и я не знаю как по другому это сделать
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 20:54
Цитата Сообщение от DebikPython Посмотреть сообщение
как не функциями добавлять функционал
пример покажите что вы хотите сделать
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 21:06  [ТС]
собственную программу «Адресная книга», работающую из командной строки и позволяющую просматривать, добавлять, изменять, удалять или искать контактные
данные ваших знакомых. Кроме того, эта информация также должна сохраняться на диске для последующего доступа.
Но я не хочу просто перепесать ваш код,повторяюсь хочу правильно научится писать их и не криво как мне указали выше.
Если не сложно обьясните как правильно это сделать,и для этого кода и в дальнейшем

Добавлено через 1 минуту
Я начал уже это делать вроде получается.Закинул ошибку с которой я уже разобрался но мне сказали что там куча мусора,бессмесленно,нужно переделать,и вообще я кривой)
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 21:17
вам пример выше. весь блок запросов на выбор действий заключаете в цикл. и условия выбора по действиям на каждое действие своя функция которая делать только то что должна делать. просмотр - значить показать все в удобном формате, добавить - значить запросить данные и добавить, удалить - запросить данные и удалить, изменить - запросить данные изменения и запросить новые данные и изменить. вот тут мы и видим что запрос данных в каждой функции ( ну по крайней мере имя и фамилия) так вот что бы не писать это в каждой функции почему бы не вынести в отдельную которая будет возвращать результат. вот так потихоньку и уберете лишнее что то добавите и почистите код.
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 21:33  [ТС]
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
def contact():
    print("Ваши контакты:\n")
    for k,v in contacts.items():
        print(k,v)
    print('\n')
Не особо вот это,и что значит k,v
И еще не особо понял как работает строка снизу,и для чего нужно "f'"
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
contacts[which2] = f'Телефон: {data}'
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 21:50
dict.items() - возвращает пары (ключ, значение). читаем

F-Строки
вот это уже нормальный подход к обучению. без обид на замечания и конкретные вопросы
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 22:13  [ТС]
Что можете посоветовать,прочитал кингу укус питона
Загуглил задачи по пайтону,вроде когда открываю решения они очевидные и я должен был понять как это делается,но на очередной задаче стою с яйцом малом и сковородкой в руке,но не знаю как приготовить...
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 22:38
ПИТОНТЬЮТОР попробуйте. я начинал с этого без книжек и прочей инфы ничего не понимая даже в основах. регистрация дает возможность посмотреть лучшие решения при правильном своем
1
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 22:44  [ТС]
А Грокаем Алгоритмы стоит читать после ПИТОНТЬЮТОР?Если нет то что?Если не сложно посоветуйте что после)
0
 Аватар для Semen-Semenich
5224 / 3471 / 1173
Регистрация: 21.03.2016
Сообщений: 8,298
31.01.2020, 22:47
просто начните что то писать на основе своих знаний и форум вам в помощь. это лучший советчик. Грокаем Алгоритмы я даже в глаза не видел, не могу что то советовать.
0
1 / 2 / 1
Регистрация: 27.01.2020
Сообщений: 60
31.01.2020, 22:52  [ТС]
А как вы сами изучали python?)

Добавлено через 1 минуту
Говорят без алгоритмов нет смысла писать что то,мол их обязательно нужно знать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.01.2020, 22:52
Помогаю со студенческими работами здесь

Как исправить ошибку TypeError: 'str' object is not callable?
Как исправить ошибку типа объекта. try: WebDriverWait(chrome, 60).until( ...

TypeError: 'str' object is not callable. Как исправить? - Python
import time, socket, threading, requests, urllib, socks def thread(numthreads, attack): threads = for n in...

Почему возникает ошибка object is not callable?
Отрывок кода def opr(self): path = File_location + &quot;1_classes/&quot; + self.lineEdit1.text() + '.txt' try: ...

Внезапный лишний аргумент: str ('str' object has no attribute 'Name')
Здравствуйте, уважаемые форумчане! Создаю простейшее приложение на Python: класс и его использование. Совершенно выбивает из колеи...

str' object is not callable
Пишу FeedBack бота для ВУЗа. Есть пару проблем: 1. При команде /mail не меняется тема сообщения. 2. Возникает ошибка &quot; 'str' object is...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru