Преобразовать массив, прочитанный sys.stdin, в «нормальный» формат - PullRequest
0 голосов
/ 16 мая 2019

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

С программой secound, которую я прочитал в выводе первой, с

array = []


for zeile in sys.stdin:
    zeile = str.strip(zeile)
    array.append(zeile)

Это приводит к # (1)

['[17 24  1  8 15]', '[23  5  7 14 16]', '[ 4  6 13 20 22]', '[10 12 19 21  3]', '[11 18 25  2  9]']

Что мне нужно, это # ​​(2)

[17 24  1  8 15]
[23  5  7 14 16]
[ 4  6 13 20 22]
[10 12 19 21  3]
[11 18 25  2  9]

Который сделан первой программой.

Итак, мой вопрос: как мне отформатировать полученный результат в # (1), чтобы получить массив, который мне нужен? (# (2))

1 Ответ

0 голосов
/ 18 мая 2019

Я нашел решение

Я печатаю стандартный ввод, который я получаю из моей первой программы, во внешний файл, и я читаю его и манипулирую им, чтобы он удовлетворял моим потребностям

Вот код:

data = open('magischesDreieckErzeugt.txt', 'w')
for zeile in sys.stdin:
    zeile = str.strip(zeile)
    print(zeile, file=data)
    if zeile == 'Bitte korrigieren Sie Ihre Eingabe!':
        print('Korrigieren Sie Ihre Eingabe im 1. Teil des Programms!')
        quit()
    else:
        print(zeile)
data.close()

И прочитайте это с:


with open('magischesDreieckErzeugt.txt') as infile:
    quadrat = np.fromstring( infile.read().replace('[','').replace(']', ''), sep=' ')

# bestimme da maximum des arrays und ziehe die wurzel um die länge (= höhe) des arrays zu ermitteln
x = int(np.sqrt(np.max(quadrat)))

# formatiere das array in ein x mal x array im
quadrat = np.reshape(quadrat, (-1,x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...