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

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

29.10.2022, 08:39. Показов 1115. Ответов 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
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru