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

Непонятная ошибка

02.04.2021, 18:33. Показов 859. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите устранить непонятную ошибку
Задача: Задача на реализацию интерфейса в консоли
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
a, b, c, com, p = [], [], [], 0, 0
while p != 'Stop': 
    com = input().split()
    p = com[-1]
    com.pop(-1)
    if com == ['Добавить', 'новую', 'фамилию']:
        a.append(p)
        b.append(p)
        c.append(1)
    elif com == ['Удалить', 'по', 'индексу']:
        p = int(p)
        if len(a) - 1 >= p:
            a.pop(p)
            c[p] = 0
        else:
            print('В списке нет такого индекса')
    elif com == ['Удалить', 'по', 'фамилии']:
        if a.count(p) > 0:
            for x in range(len(a) - 1):
                if a[x] == p:
                    c[x] = 0
            a.remove(p)
        else:
            print('В списке нет такой фамилии')
print(b)
print(c)
print(a)
Ввод:
Добавить новую фамилию Иванов
Добавить новую фамилию Семенов
Добавить новую фамилию Кравцов
Удалить по фамилии Иванов
Удалить по фамилии Иванов
Удалить по фамилии Семенов
Удалить по фамилии Семемов
Stop

Вывод:
В списке нет такой фамилии
В списке нет такой фамилии
['Иванов', 'Семенов', 'Кравцов']
[0, 1, 1]
['Кравцов']

Речь идёт о 19, 20, 21 строках
Как видно выше, в списке одна фамилия, а пишет что две, при том, if срабатывает дважды(проверял с помощью принтов), но заменяет только единожды.
Не понимаю с чем это связано, так как при других выводах всё нормально
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2021, 18:33
Ответы с готовыми решениями:

Непонятная ошибка
Писал простенькую математическую программу, что то там перепробовал, перенаписал, потом вернул как все есть, неожиданно при попытки...

Опять непонятная ошибка!
Здравствуйте , писал простой код. Далее условие: Пользователь вводит одно за другим целые числа, делящиеся на 10, пока не введёт число,...

Python непонятная ошибка
получаю ошибку "не соответствует внешнему уровню отступа" В этом классе пока две элементарные функции import...

15
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 18:39
ну так а что вы хотели
Цитата Сообщение от Zergal Посмотреть сообщение
['Удалить', 'по', 'фамилии']:
.А вы вводите удалить по фамилии Семенов

Да и если быть откровенным код составлен немного коряво... в общем нужны правки... например не com==['удалить по фамилии'], а ['удалить по фамилии'] in com
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 18:41  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
А вы вводите удалить по фамилии Семенов
Там не в этом ошибка, там из списка созданного сплитом удаляется фамилия "Семенов" и другие
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 18:53
давайте лучше переделаем код, это будет легче ....

Добавлено через 1 минуту
или не хотите?

Добавлено через 4 минуты
ладно, если не хотите, то попробуйте удалить по индексу, т.к если я не ошибаюсь, то remove() не изменяет список
Цитата Сообщение от Zergal Посмотреть сообщение
for x in range(len(a) - 1):
                if a[x] == p:
                    c[x] = 0
            a.remove(p)
Добавлено через 1 минуту
Цитата Сообщение от Zergal Посмотреть сообщение
a.remove(p)
попробуйте заменить на del a[x]
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 18:55  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
ладно, если не хотите, то попробуйте удалить по индексу, т.к если я не ошибаюсь, то remove() не изменяет список
У меня проблема не с этим, а со списком c, который изменяется единожды почему-то
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:03
хорошо, смотрите расскажи пожалуйста как работает ваш код(желательно расскажите как вы используете 4 созданных списка)

Добавлено через 5 минут
Цитата Сообщение от Zergal Посмотреть сообщение
if a.count(p) > 0:
попробуйте заменить на
Python
1
if p in a:
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 19:07  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
иска)
Цитата Сообщение от Volodya_drv Посмотреть сообщение
хорошо, смотрите расскажи пожалуйста как работает ваш код(желательно расскажите как вы используете 4 созданных списка)
com - это вводимая команда, из этого списка удаляется последний элемент списка, и присваевается p
p - переменная которая хранит фамилию/индекс из com
b - полный список фамилий из которого ничего не удалялось
c - список который содержит в себе нули и единицы. 0 - фамилия на данном индексе отсутствует, 1 - присутствует (на местах из списка b).
a - список с уже удалёнными фамилиями
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:12
Цитата Сообщение от Zergal Посмотреть сообщение
if a.count(p) > 0:
if p in b: попробуйте

Добавлено через 2 минуты
сработало?
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 19:15  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
if p in b: попробуйте
Так зачем из b-то, там всегда будет присутствовать фамилия, даже если мы удалим её
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:18
ну тогда проверяйте на наличие в списке a
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 19:20  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
ну тогда проверяйте на наличие в списке a
Если и так, та же история
Печатается [0, 1, 1]
А должно [0, 0, 1]
0
22 / 14 / 8
Регистрация: 15.11.2020
Сообщений: 80
02.04.2021, 19:24
ну в таком случае дайте немного подумать, т.к ошибка не сказать что прям сложная.
Но всё же давайте я вам напишу готовое решение...))
0
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 19:33  [ТС]
Цитата Сообщение от Volodya_drv Посмотреть сообщение
ну в таком случае дайте немного подумать, т.к ошибка не сказать что прям сложная.
Но всё же давайте я вам напишу готовое решение...))
Если вы мне поможете, я буду вам неописуемо благодарен
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
02.04.2021, 19:50
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
def add_name(name):
    if name not in list_name:
        list_name.append(name)
        list_marker.append(1)
 
def del_marker(index):
    index = int(index)
    if index > len(list_name) - 1:
        print('В списке нет такого индекса')
    else: 
        list_marker[index] = 0
 
def del_name(name):
    if name not in list_name:
        print('В списке нет такой фамилии')
    else:
        del_marker(list_name.index(name))
    
 
list_name = []
list_marker = []
while True:
    info = input()
    if info == 'Stop': break
    else:
        info = info.split()
        command = ' '.join(info[:-1])
        data = info[-1]
        if command == 'Добавить новую фамилию' :
            add_name(data)
        elif command == 'Удалить по фамилии':
            del_name(data)
        elif command == 'Удалить по индексу':
            del_marker(data)
            
print(list_name)
print(list_marker)
1
0 / 0 / 0
Регистрация: 17.03.2021
Сообщений: 28
02.04.2021, 23:31  [ТС]
Нужно без функций
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
03.04.2021, 09:06
Zergal, так код тела функции вставьте в соответствующие условие где вызывается эта функция. вот вам и без функций.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2021, 09:06
Помогаю со студенческими работами здесь

Во время выполнения кода непонятная ошибка
Поставлена задача написать программу, которая будет служить телефонной книгой. У неё должна быть возможность искать контакт, добавлять...

Непонятная ошибка (SyntaxError: invalid syntax)
Не могу понять, где ошибка. Удалая строку с ошибкой она переходит в другую строку ниже. Текст ошибки: File...

Непонятная ошибка
import tkinter from PIL import Image, ImageTk root = tkinter.Tk() frame = tkinter.Frame(root) frame.grid() canvas =...

непонятная синтаксическая ошибка
Здравствуйте, в универе начали изучать Питон. Пишу программу с использованием функции (требование преподавателя), вроде бы сделал все как в...

Непонятная ошибка в print
Соственно код from math import* from fraction import* a0=int(input('введите старший коэффициент')) an=int(input('введите свободный...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru