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

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

18.05.2019, 12:31. Показов 1128. Ответов 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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
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
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru