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

При вводе команды list выводит ошибку

29.10.2022, 08:39. Показов 1196. Ответов 7

Студворк — интернет-сервис помощи студентам
При приобразовании из строковых в целочисленные через list(map(int,input("Усппеваемость").spli t())) при вводе команды list выводит ошибку
Код:
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
import sys
 
if __name__ == '__main__':
    # Список студентов.
    students = []
    count = 0
    # Организовать бесконечный цикл запроса команд.
    while True:
        # Запросить команду из терминала.
        command = input(">>> ").lower()
        # Выполнить действие в соответствие с командой.
        if command == 'exit':
            break
 
        elif command == 'add':
            # Запросить данные о студентах.
            name = input("Фамилия и инициалы? ")
            number = input("Номер группы? ")
            marks = list(map(int,input("Успеваемость").split()))
            # Создать словарь.
            student = {
                'name': name,
                'number': number,
                'marks': marks,
            }
            # Добавить словарь в список.
            students.append(student)
            # Отсортировать список в алфавитном порядке.
            if len(student) > 1:
                students.sort(key=lambda item: item.get('name', ''))
        # Заголовок таблицы.
        elif command == 'list':
            line = '+-{}-+-{}-+-{}-+-{}-+'.format(
                '-' * 4,
                '-' * 30,
                '-' * 20,
                '-' * 15
            )
            print(line)
            print(
                '| {:^4} | {:^30} | {:^20} | {:^15} |'.format(
                    "№",
                    "Ф.И.О.",
                    "Номер группы",
                    "Успеваемость"
                )
            )
            print(line)
            # Вывести данные о всех студентах.
            for idx, worker in enumerate(students, 1):
                print(
                    '| {:>4} | {:<30} | {:<20} | {:>15} |'.format(
                        idx,
                        worker.get('name', ''),
                        worker.get('number', ''),
                        worker.get('marks', 0)
                    )
                )
            print(line)
        # Получить данные о студентах имеющих хотя бы одну оценку.
        elif command == 'select':
            # Инициализировать счётчик
            count = 0
            # Проверить студентов хотя бы на одну оценку.
            for student in students:
                #marks = list(map(int, student.get('marks', '').split()))
                if "2" in student.get('marks', ''):
                    count -= 1
                    print(
                        '{:>4} {}'.format('*', student.get('name', '')),
                        '{:>1} {}'.format('группа №', student.get('number', ''))
                    )
                    # Если счётчик равен 0, то оценки не найдены.
            if count == 0:
                print('Таких студентов нет')
        # Вывести справку о работе с программой.
        elif command == 'help':
            print("Список команд:\n")
            print("add - добавить студента;")
            print("list - вывести список студентов;")
            print("select - вывести список студентов, имеющих оценку 2;")
            print("help - отобразить справку;")
            print("exit - завершить работу с программой.")
        else:
            print(f"Неизвестная команда {command}", file=sys.stderr)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2022, 08:39
Ответы с готовыми решениями:

При вводе знака "-" и написании двух чисел выводит ошибку: TypeError: can't multiply sequence by non-int
what = int(input(&quot;Что делаем?: + - * / :&quot;)) if what == &quot;+&quot;: a = input(&quot;Введите 1 число: &quot;) b = input(&quot;Введите 2 число:...

Как сделать, что в VB6 при нажатии команды выдавало ошибку при вводе одинакового значения
Здравствуйте! Подскажите, пожалуйста, если при нажатии команды в vb6, в html файл записывается строка со значением: &lt;section...

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

7
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
29.10.2022, 09:37
Цитата Сообщение от Kwilmajor Посмотреть сообщение
при вводе команды list выводит ошибку
какую?
как конкретно вводишь успеваемость?
0
0 / 0 / 0
Регистрация: 06.12.2021
Сообщений: 23
29.10.2022, 10:04  [ТС]
>>> add
Фамилия и инициалы? Иванов Иван
Номер группы? 15
Успеваемость54545
>>> list
+------+--------------------------------+----------------------+-----------------+
| № | Ф.И.О. | Номер группы | Успеваемость |
+------+--------------------------------+----------------------+-----------------+
Traceback (most recent call last):
File "C:\Games\Программы\СУ\1.3\Программирова ние на Python\2_6\test.py", line 52, in <module>
'| {:>4} | {:<30} | {:<20} | {:>15} |'.format(
TypeError: unsupported format string passed to list.__format__

Process finished with exit code 1

Добавлено через 1 минуту
Поучается до это вместо marks = list(map(int,input("Успеваемость").split ())) было
marks=str(input("Успеваемость")) всё прекрасно работало но сказали надо вместо строковых целочилсенные данные при вводе и через пробел они вводились в список

Добавлено через 3 минуты
Задание
Использовать словарь, содержащий следующие ключи: фамилия и инициалы; номер
группы; успеваемость (список из пяти элементов). Написать программу, выполняющую
следующие действия: ввод с клавиатуры данных в список, состоящий из словарей заданной
структуры; записи должны быть упорядочены по алфавиту; вывод на дисплей фамилий и
номеров групп для всех студентов, имеющих хотя бы одну оценку 2; если таких студентов
нет, вывести соответствующее сообщение.
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
29.10.2022, 11:04
Как вариант, замени 56 строку на
Python
1
' '.join([str(x) for x in worker.get('marks', 0)])
Добавлено через 4 минуты
Если успеваемость вводишь, как в примере 54545, то она будет храниться в словаре одним числом в списке, т.е. 'marks' = [54545].
Тут надо вводить оценки или так: 5 4 5 4 5, если хочешь получить список чисел.
Или изменить строку 19 на:
Python
1
marks = list(map(int, input("Успеваемость")))
тогда map применит int отдельно к каждому символу и получится список в итоге.
0
0 / 0 / 0
Регистрация: 06.12.2021
Сообщений: 23
29.10.2022, 11:05  [ТС]
Помогло только теперь не находит студентов с оценкой 2
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
29.10.2022, 11:12
Поэтому сейчас и join() работает не так, как "хочется", в списке одно число, поэтому он его приводит к строке, а объединять его не с чем и получается вывод чисел не через пробел.
Если вводить числа, как выше или поменять строку кода, то оценки будут выводить через пробел.

Добавлено через 48 секунд
Kwilmajor, а что ты сделал, что не находит? Как теперь хранится информация?

Добавлено через 1 минуту
Ну, правильно, ты раньше искал строку 2 в оценках, а теперь надо искать число 2 в оценках.

Добавлено через 1 минуту
67 строку замени на
Python
1
if 2 in student.get('marks', []):
0
0 / 0 / 0
Регистрация: 06.12.2021
Сообщений: 23
29.10.2022, 11:14  [ТС]
Спасибо
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
29.10.2022, 11:14
56 строку все же лучше заменить на
Python
1
' '.join([str(x) for x in worker.get('marks', [])])
чтобы по умолчанию пустой список возвращался, ведь иы ожидаем, что там список будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2022, 11:14
Помогаю со студенческими работами здесь

Подскажите, почему выводит ошибку со scanf при вводе объекта массива?
#include &lt;iostream&gt; #include&lt;math.h&gt; using namespace std; #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; int main() ...

При вводе числа 1024 выводит 0, а при вводе числе, больших 1024 выводит отрицательные числа
Здравствуйте, создала программу и при вводе числа 1024 выводит 0, а при вводе числе, больших 1024 выводит отрицательные числа, до 1024...

Не могу найти ошибку. Выводит значение только при вводе одного символа, если ввожу больше не выдает значение
procedure TForm2.Button1Click(Sender: TObject); var i,j,b:integer; A: array of string; result:string; begin for j := 1 to 50 do...

Программа выводит ошибку "list index out of bounds (3)" при экспорте в Excel
При попытке экспорта данных в Excel из Базы данных (DBGrid в качестве посредника) программа выдает ошибку &quot;list index out of bounds...

Составить программу, которая при вводе одного из символов: y или Y выводит на экран слово “Да”, а при вводе n или N – слово “Нет”
Составить программу, которая при вводе одного из символов: y или Y выводит на экран слово “Да”, а при вводе n или N – слово “Нет”


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru