Форум сайта python.su
Добра всем! Прибор, отмечает частоты магнитных колебаний у разных источников (ist1, ist2) и выдает данные в следующем виде:
N #общее количество измерений 134 846 874 987 36749 55 90 54 .....# частоты у ист 1 - примерно 100 000 значений ist1 #отсечка к другому источнику 34 89 76 65 78 98 678 ...... #частоты у ист 2 - примерно 100 000 значений ist2 #отсечка к другому источнику . . . ist2 #последняя отсечка quit #заканчиваются измерения
[{2 3 4 5....}, 'int1', {2 3 4 5....}, 'int2', ......., {2 3 4 5....}, 'int2']
n = int(input()) lst = [] a = set() el = 0 while el != 'quit': el = input() lst.append({int(el) for el in el.split()}) lst.append(input())
ValueError: invalid literal for int() with base 10: 'quit'
Офлайн
>>> l = [] >>> while True: s = input('?:') if not s: break l.append(int(s)) ?:1 ?:2 ?:3 ?:4 ?:5 ?: >>> l [1, 2, 3, 4, 5] >>>
Офлайн
lupantonименно через input()? 5000 значений - это сильно
тысяч 5 примерно, плюс-минус.
Мне нужно через input() завести все в список вида:
>>> s = input() 1 2 3 4 5 6 quit >>> [int(i) for i in s.split() if i.isdigit()] [1, 2, 3, 4, 5, 6] >>>
Отредактировано vic57 (Апрель 11, 2018 12:27:35)
Офлайн
Это многоосевой миллигауссметр, собранный еще в 70-х годах прошлого века умельцами одного НИИ. Данные считываются в его собственную оперативную память, оттуда через com - порт в СУБД для систематизации и обработки. Фактически задача состоит в выхватывании частей потока для последующей поверки прибора - и желательно ее иметь в таком виде.
Спасибо, буду пробовать.
Офлайн
lupanton
так и читайте прямо из порта или из БД, руками это набивать - пальцы сотрешь
+ обязательно ошибки оператора будут
Офлайн
само собой! кто ж будет вручную это заводить-то, да и не получится. Замер на каждом источнике фиксирует данные в памяти прибора (оч древнее устройство, но настроенное и рабочее) - данные идут в СУБД, но их надо выхватить до записи новой порции данных в оперативку - получается они вроде как введены самим прибором во что-то наподобие текстового файла, нужно взять их -input() самый простой способ. Это временная заплатка до модернизации
Офлайн
Ошибка в том, что у вас проверка значения el происходит в начале цикла, затем ему присваивается новое значение, оно сплитится и приводится к int.
А когда вы доходите до последней строк, el у вас равен quit, проверка уже прошла. И вы его пробуете разбить на элементы и сделать из него int.
Правильно так:
while True: el = input() if el == 'quit': break
Офлайн
lupanton1.ну технически легко запараллелить COM-порт на прием и сделать мониторинг в реальном времени
но их надо выхватить до записи новой порции данных в оперативку - получается они вроде как введены самим прибором во что-то наподобие текстового файла, нужно взять их
Офлайн