хотите использовать только одну определяемую пользователем функцию для ввода и вывода в python 3

#arrays #python-3.x #user-defined-functions

Вопрос:

 from numpy import*
def row():
    for i in range(len(a)):
        for j in range(len(a[i])):
            t = [i, j]
            inp(*t)
def inp(*m):
    a[m] = int(input(f"entert the element of {m} = "))
    out(*m)
def out(*o):
    print(a[o])
a = zeros((1,2), dtype = int)
row()
 

Вывод отображается примерно так:

 enter the element of (0, 0) = 2
2
enter the element of (0, 1) = 3
3
 

но я хочу показать результат таким образом

ввод в такое время, как это

 enter the element of (0, 0) = 2
enter the element of (0, 1) = 3
 

вывод в такое время

 2
3
 

это можно сделать, создав два отдельных цикла for или две функции для ввода и вывода
, но мой вопрос: как я могу сделать это, создав только одну функцию

 def row():
    for i in range(len(a)):
        for j in range(len(a[i])):
            t = [i, j]
            inp(*t)
 

Ответ №1:

Вместо того чтобы печатать вывод сразу, сохраните значения и распечатайте их после того, как закончите их сбор:

 import numpy as np

def row(a):
    values = []
    for i in range(len(a)):
        for j in range(len(a[i])):
            value = get_input(a, i, j)
            values.append(value)
    for value in values:
        print(value)

def get_input(a, *m):
    a[m] = int(input(f"enter the element of {m} = "))
    return a[m]

a = np.zeros((1,2), dtype = int)
row(a)
 

дает

 enter the element of (0, 0) = 1
enter the element of (0, 1) = 2
1
2
 

Однако есть еще более простой способ: поскольку вы также задаете новые элементы в своей матрице, вам не нужно сохранять их отдельно, а можно просто распечатать значения матрицы:

 for item in a.ravel():
    print(item)
 

Комментарии:

1. Большое вам спасибо, дорогая, на самом деле я очень новичок в программировании на python, держите меня в своих молитвах