Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 16.10.2018
Сообщений: 59

Что не так с кодом?

18.05.2019, 12:31. Показов 1172. Ответов 10

Студворк — интернет-сервис помощи студентам
Почему не работает этот код?
Что не так?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Abonent():
    def __init__(self,idd,name,surname,father):
        self.idd = idd
        self.name = name
        self.surname = surname
        self.father = father
 
size = int(input())
 
abonents =[]
 
for i in range(size):
    n = Abonent()
    n.idd = int(input())
    n.name = input()
    n.surname = input()
    n.father = input()
    aboents =append(n)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.05.2019, 12:31
Ответы с готовыми решениями:

Что не так с кодом ?
import random from tkinter import * def check(ent,a): if ent==a: correct=Label(window,width = 20,text = 'Correct!') ...

Что-то не так с кодом
И так я постепенно перехожу с pascal на python. Я решаю задачи на pascal, а потом стараюсь переписывать на python.Это мой первый...

Что не так с кодом ?
Почему этот код не подходит для этой задачи: Шахматный король ходит по горизонтали, вертикали и диагонали, но только на 1 клетку....

10
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
18.05.2019, 12:37
а ошибка вам о чем то говорит? конструктор класса принимает 4 аргумента а вы пытаетесь создать экземпляр не передав ему ни одного аргумента
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Abonent():
    def __init__(self,idd,name,surname,father):
        self.idd = idd
        self.name = name
        self.surname = surname
        self.father = father
 
size = int(input())
 
abonents =[]
 
for i in range(size):
    idd = int(input())
    name = input()
    surname = input()
    father = input()
    n = Abonent(idd,name,surname,father)
    aboents =append(n)
0
0 / 0 / 0
Регистрация: 16.10.2018
Сообщений: 59
18.05.2019, 12:51  [ТС]
А как потом обращаться к елементам из масива?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
18.05.2019, 17:36
Matr1, Элементами массива у Вас являются экземпляры класса. В данном случае Вы можете к ним обратится только по индексам списка abonents[i]

Добавлено через 5 минут
Matr1, Для того, что бы обращение было более понятным, например по именам или для уникальности по индексам idd, нужно экземпляры класса помещать не в список , а в словарь. Где ключем будет индекс idd ( или имя).
Кстати тогда, с помощью модуля shelve, этот словарь будет просто сохранять в питоновскую БД.
0
0 / 0 / 0
Регистрация: 16.10.2018
Сообщений: 59
18.05.2019, 17:56  [ТС]
https://www.cyberforum.ru/cgi-bin/latex.cgi?Можешь навести пример?

Добавлено через 16 секунд
Можете навести пример?
0
 Аватар для CoffeeFox
1 / 1 / 0
Регистрация: 18.05.2019
Сообщений: 5
18.05.2019, 18:40
Matr1, пример работы со словарем:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Abonent():
    def __init__(self,idd,name,surname,father):
        self.idd = idd
        self.name = name
        self.surname = surname
        self.father = father
 
size = int(input())
 
abonents = {}
 
for i in range(size):
    idd = int(input())
    if idd in abonents:
        print("Idd", idd, "is already taken")  #Idd уже занят
        continue  #Переход к следующему пользователю
    name = input()
    surname = input()
    father = input()
    n = Abonent(idd,name,surname,father)
    abonents[idd] = n
    print("Successfully added user")  #Пользователь успешно добавлен
Удачи!

Добавлено через 20 минут
Также можно создать класс Abonents, реализующий работу со словарем.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Abonents:
    def __init__(self):
        self.abonents = {}
        self.lastidd = 1
 
    def add(self, idd, name, surname, father):
        if idd=='auto':
            idd = self.lastidd
            self.lastidd += 1
        if idd in self.abonents:
            print("Idd is already taken")
            return
        self.abonents[idd] = Abonent(idd,,name,surname,father)
        print("User with idd", idd, "successfully added")
    def delete(self, idd):
        if idd not in self.abonents:
            print("No user with idd", idd, "found")
            return
        del self.abonents[idd]
        print("User with idd", idd, "successfully deleted")
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
18.05.2019, 23:03
CoffeeFox, В классе Abonents у Вас не хватает сохранения данных в БД, например с помощью модуля shelve. Тогда бы этот код получил практическое применение. В том виде, в котором он сейчас, это просто пример работы с классами.
Мне лень полностью проверять работоспособность кода. Вот только уберите лишнюю запятую в строке 13 второго кода. Это сразу на что натыкается отладчик.
1
 Аватар для CoffeeFox
1 / 1 / 0
Регистрация: 18.05.2019
Сообщений: 5
20.05.2019, 17:53
Viktorrus, опыта работы с shelve, к сожалению, не имею. Хотелось бы увидеть пример. Насчет запятой - понял, принял, но правка почему-то недоступна (???).
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.05.2019, 19:33
Цитата Сообщение от CoffeeFox Посмотреть сообщение
правка почему-то недоступна
Правку можно сделать только пока она не закрыта чужим комментарием.

Добавлено через 14 минут
CoffeeFox, Вот телефонный справочник, который я делаю. Осталось только сделать графический интерфейс. Справочник позволяет создать в одной базе несколько телефонных книг на разные тематики. Например городские телефоны, телефоны предприятия внутренние, личные телефоны и так далее.
Показываю в качестве примера.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import shelve
 
class PhoneBook:
    def __init__(self, keyBook, name, dicRec={}):
        self.keyBook = keyBook
        self.name = name
        self.dicRec = dicRec
    def createRec(self):
        print(self.name)
        dbRec = shelve.open('phoneRecords')
        label = input('название записи: ')
        phone = input('телефонный номер без разделителей : ')
        print('Ф,И,О,коммент. - Если нет, просто нажимайте Enter')
        familyName = input('Фамилия: ')
        name = input('Имя: ')
        middleName = input('Отчество: ')
        comment = input('Комментарий: ')
        if len(dbRec)>0:
            L = sorted(dbRec.items(), key=lambda item: item[0])
            keyRec = str(int(L[-1][0]) + 1)
        else:
            keyRec = "1"
        keyBook = self.keyBook
        record = PhoneRec(keyRec, label, phone, familyName, name, middleName, comment, keyBook)
        dbRec[keyRec] = record
        self.dicRec[keyRec] = record
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
    def delPhoneRec(self, key):
        dbRec = shelve.open('phoneRecords')
        del dbRec[key]
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
    def dumpPhoneRec(self):
        dbRec = shelve.open('phoneRecords')
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
 
class PhoneRec:
    def __init__(self, keyRec, label, phone, familyName, name, middleName, comment, keyBook):
        self.keyRec = keyRec
        self.label = label
        self.phone = phone
        self.familyName = familyName
        self.name = name
        self.middleName = middleName
        self.comment = comment
        self.keyBook = keyBook
 
activBook = None
 
def createPhoneBook():
    dbBook = shelve.open('phoneBooks')
    nameBook = input('Введите название телефонной книги: ')
    if len(dbBook)>0:
        L = sorted(dbBook.items(), key=lambda item: item[0])
        keyBook = str(int(L[-1][0]) + 1)
    else:
        keyBook = "1"
    book = PhoneBook(keyBook,nameBook)
    dbBook[keyBook] = book
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def delPhoneBook(key):
    dbBook = shelve.open('phoneBooks')
    del dbBook[key]
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def dumpPhoneBooks():
    dbBook = shelve.open('phoneBooks')
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def getBook(key):
    global activBook
    dbBook = shelve.open('phoneBooks')
    book = dbBook[key]
    dbBook.close()
    activBook = book
 
if __name__ == '__main__':
    #dumpPhoneBooks()
    #createPhoneBook()
    #delPhoneBook('1')
    #getBook('1'); print(activBook.keyBook, activBook.name)
 
    getBook('1')
    activBook.dumpPhoneRec()
    #activBook.createRec()
    #activBook.delPhoneRec('1')
Добавлено через 16 секунд
CoffeeFox, Вот телефонный справочник, который я делаю. Осталось только сделать графический интерфейс. Справочник позволяет создать в одной базе несколько телефонных книг на разные тематики. Например городские телефоны, телефоны предприятия внутренние, личные телефоны и так далее.
Показываю в качестве примера.
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import shelve
 
class PhoneBook:
    def __init__(self, keyBook, name, dicRec={}):
        self.keyBook = keyBook
        self.name = name
        self.dicRec = dicRec
    def createRec(self):
        print(self.name)
        dbRec = shelve.open('phoneRecords')
        label = input('название записи: ')
        phone = input('телефонный номер без разделителей : ')
        print('Ф,И,О,коммент. - Если нет, просто нажимайте Enter')
        familyName = input('Фамилия: ')
        name = input('Имя: ')
        middleName = input('Отчество: ')
        comment = input('Комментарий: ')
        if len(dbRec)>0:
            L = sorted(dbRec.items(), key=lambda item: item[0])
            keyRec = str(int(L[-1][0]) + 1)
        else:
            keyRec = "1"
        keyBook = self.keyBook
        record = PhoneRec(keyRec, label, phone, familyName, name, middleName, comment, keyBook)
        dbRec[keyRec] = record
        self.dicRec[keyRec] = record
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
    def delPhoneRec(self, key):
        dbRec = shelve.open('phoneRecords')
        del dbRec[key]
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
    def dumpPhoneRec(self):
        dbRec = shelve.open('phoneRecords')
        for key in dbRec:
            record = dbRec[key]
            print(record.keyRec, '=>\n ', record.label, record.phone, record.familyName, record.name,  
                  record.middleName, record.comment, self.name)
        dbRec.close()
 
class PhoneRec:
    def __init__(self, keyRec, label, phone, familyName, name, middleName, comment, keyBook):
        self.keyRec = keyRec
        self.label = label
        self.phone = phone
        self.familyName = familyName
        self.name = name
        self.middleName = middleName
        self.comment = comment
        self.keyBook = keyBook
 
activBook = None
 
def createPhoneBook():
    dbBook = shelve.open('phoneBooks')
    nameBook = input('Введите название телефонной книги: ')
    if len(dbBook)>0:
        L = sorted(dbBook.items(), key=lambda item: item[0])
        keyBook = str(int(L[-1][0]) + 1)
    else:
        keyBook = "1"
    book = PhoneBook(keyBook,nameBook)
    dbBook[keyBook] = book
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def delPhoneBook(key):
    dbBook = shelve.open('phoneBooks')
    del dbBook[key]
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def dumpPhoneBooks():
    dbBook = shelve.open('phoneBooks')
    for key in dbBook:
        book = dbBook[key]
        print(book.keyBook, '=>\n ', book.name)
    dbBook.close()
def getBook(key):
    global activBook
    dbBook = shelve.open('phoneBooks')
    book = dbBook[key]
    dbBook.close()
    activBook = book
 
if __name__ == '__main__':
    #dumpPhoneBooks()
    #createPhoneBook()
    #delPhoneBook('1')
    #getBook('1'); print(activBook.keyBook, activBook.name)
 
    getBook('1')
    activBook.dumpPhoneRec()
    #activBook.createRec()
    #activBook.delPhoneRec('1')
Добавлено через 8 минут
CoffeeFox, Точнее здесь две БД. Одна небольшая просто содержит список созданных телефонных книг, а вторая основная содержит все телефонные записи из всех книг.

Добавлено через 1 минуту
Опять форум сбоит. Двоятся комментарии.
1
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
20.05.2019, 19:39
Цитата Сообщение от Viktorrus Посмотреть сообщение
Вот телефонный справочник, который я делаю
мне кажется для этого достаточно словаря и пару функций или я ошибаюсь? для чего этот класс
Python
1
2
3
4
5
6
7
8
9
10
class PhoneRec:
    def __init__(self, keyRec, label, phone, familyName, name, middleName, comment, keyBook):
        self.keyRec = keyRec
        self.label = label
        self.phone = phone
        self.familyName = familyName
        self.name = name
        self.middleName = middleName
        self.comment = comment
        self.keyBook = keyBook
основываясь на этой статье
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.05.2019, 19:57
Здесь еще нужно в class PhoneRec добавить метод редактирования записи. Да и вообще по ходу создания графического интерфейса выяснится, что еще нужно добавить, например резервное копирование.

Добавлено через 9 минут
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
для чего этот класс
Этот класс я решил создать, что бы можно было в справочник поместить n-ное количество телефонных книг. И потом я пошел по пути строгово соответствия принципам ООП. Кроме класса записей, в реальности существует класс разных телефонных книг. И в моем справочнике можно будет выбирать определенную книгу и с ней работать. Это актуально для предприятия, где, кроме городских, есть и внутренне телефоны, сгруппированные по отделам. Может даже придется для разных книг разные наборы полей делать, то есть создавать подклассы записей имеющих другую структуру.

Добавлено через 7 минут
Semen-Semenich, Вобщем это пока еще полуфабрикат. Просто CoffeeFox, попросил меня показать пример работы с модулем shelve. Мне проще всего было показать свою наработку, хотя она еще не закончена, чем где то искать этот пример., А так бы я и не стал выкладывать этот справочник. Считайте что его нет. Не имеет смысла обсуждать не законченный проект.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.05.2019, 19:57
Помогаю со студенческими работами здесь

не понимаю что не так с кодом
import copy def print_matrix(A): for strA in A: print(strA) def minor(A,i,j): M=copy.deepcopy(A) ...

Что не так с кодом в маленькой программе
Напишите программу- симулятор пирожка с «сюрпризом», - которая бы при запуске отображала один из пяти различных «Сюрпризов», выбранный...

Что не так с кодом моей нейросети?
У меня была задача написать несложную модель нейросети для определения приоритетного направления для студента по его характеристике. ...

Python, Какое из чисел больше? Что не так с кодом?
Какое из чисел больше? Входные данные Даны два целых числа, каждое записано в отдельной строке. Выходные данные Программа должна...

IndexError: list index out of range Что не так с этим кодом
sum = "" a = n = len(a) x,y = 0,0 for i in range(n): x = i-1 y = i+1 print(a + a)


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru