1

Тема: str 4 строки

Вибачаю за питання. Маю досвід лише з Ci, matlab.

Зчитую масив даних. Усі данні 4 знаки десятичні.
Кожен string має 5 строк
Питання - як кожну строку перевести зі string в int для подальшого формування масиву іnt, та подальшого запису масиву в комп'пютер.
Пояснення: <type 'str'> - це я собі для наладки вивожу, в реальному випадку цієї строки не буде.

while (k<20):
if (serialFromArduino.inWaiting() > 0):
        input1 = str(serialFromArduino.read(30))
        print(input1)
        print(type(input1))
        k=k+1;

Отримую на екрані:

============= RESTART: C:\Python27\Lib\ivt_arduino_serial_04.py =============
1006

1007

1008

1009

1010


<type 'str'>
1016

1017

1018

1019

1001


<type 'str'>
1007

1008

1009

1010

1011


<type 'str'>

І так далі.....до заданого розміру

2 Востаннє редагувалося koala (07.02.2020 18:26:25)

Re: str 4 строки

Для початку - я правильно розумію, що 30 - це кількість байт для читання? Щось мені підказує, що якщо замінити її на 6, то ви читатимете по одному числу, а не по 5, і питання автоматично зникне.

arr = []
...
        input1 = int(str(serialFromArduino.read(6)))
        print(input1) # 1006
        arr.append(input1)

Але можна і так:

arr = []
...
        input_arr = [int(chunk) for chunk in input1.splitlines()]
        print(input_arr) #[1006, 1007, 1008, 1009, 1010]
        arr += input_arr
Подякували: igor19541

3

Re: str 4 строки

Ну і звичайний спосіб зробити цикл до 20 - це

for _ in range(20): #можна було написати for k, але ж ми ніде не використовуємо k, а _ - це стандартна назва непотрібної змінної
Подякували: igor19541

4

Re: str 4 строки

Дякую
input1 = int(str(serialFromArduino.read(6)))
красіво.

============= RESTART: C:\Python27\Lib\ivt_arduino_serial_04.py =============
1001


1002


1003


1004


1005


1006


1007


1008
......

5 Востаннє редагувалося koala (07.02.2020 19:14:27)

Re: str 4 строки

Ні, красиво - це так:

BYTES_IN_NUMBER = 6
BLOCK_SIZE = 5 #я не знаю, чому ви читали по 5*6 байтів, але, припустимо, в цьому дійсно був сенс
BLOCK_COUNT = 20
arr = [int(str(serialFromArduino.read(BYTES_IN_NUMBER)))for _ in range(BLOCK_COUNT *BLOCK_SIZE )]
Подякували: igor19541

6

Re: str 4 строки

Наступне питання.

кожен стінг має 5 строк.
Пробував конвертувати в integer , видає помилку.

k=0;
while (k<4):
   if (serialFromArduino.inWaiting() > 0):
        input1 = str(serialFromArduino.read(30))
        print(input1)
        print(type(input1)) ##### поки стоїть для наладки
        input2=int(input1,base=10)  #### ТУТ ДІАГНОСТУЄТЬСЯ ПОМИЛКА
        k=k+1;

Як мені кожну строчку стрінгу конвертувати в один int та відправити в масив?
Моє кінцеве завдання сформувати масив конкретного розміру та записати його в ПК.

1001

1002

1003

1004

1005


<type 'str'>
1006

1007

1008

1009

1010


<type 'str'>
1011

1012

1013

1014

1015


<type 'str'>
1016

1017

1018

1019

1001


<type 'str'>

7

Re: str 4 строки

А чим це відрізняється від першого питання?

8

Re: str 4 строки

Дякую, Koala.
Все запрацювало згідно Вашого останнього варіанту.
Красіво.

9

Re: str 4 строки

Наступне питання.
Згідно варіанту koala приймаю масив arr заданої довжини, тип list, integer. Проацює.
Пробую записати файл в комп'ютер. Комада "open" не проходить, отримую помилку.
Прохання допомогти скинути файл в ПК.

k=0;
while (k<1):
   if (serialFromArduino.inWaiting() > 0):
        BYTES_IN_NUMBER = 6
        BLOCK_SIZE = 5 #10 #5
        BLOCK_COUNT = 20
        arr = [int(str(serialFromArduino.read(BYTES_IN_NUMBER)))for _ in range(BLOCK_COUNT *BLOCK_SIZE )]
        k=k+1
 
       MyFile = open('output.txt','w') 
       MyFile.writelines(arr) 
       MyFile.close () 
 

error - unindent does not march any outer international level

10

Re: str 4 строки

Вирівняйте код.

Подякували: leofun01, igor19542

11

Re: str 4 строки

igor1954 написав:

error - unindent does not march any outer international level

march ...
Перенабирати текст помилки ... замість того щоб копіювати і вставити ...
Відступи ...

igor1954, кидайте це діло, програмування - не ваше.

Подякували: igor19541

12

Re: str 4 строки

igor1954, я вам перекладу, що пан leofun01 сказав: прочитайте якусь книжку по Python. Хоча б почніть. Писати вам тут підручник буде довго і незручно.

Подякували: leofun011

13

Re: str 4 строки

Дякую.
Вирівняв.
Працює.