Как получить такой же вывод, используя многомерные массивы? - PullRequest
0 голосов
/ 08 октября 2019

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

Моя программа выполняет то, что должна делать - вывод правильный. Тем не менее, я действительно не знаю, как решить эту проблему с помощью 2d массивов. Возможно, потому что я не встречался с ними ранее, и мы только начали использовать их в классах.

while True:
    try:
        num_row = int(input("Number of rows: "))
        break
    except ValueError:
        print('Please enter an integer!')

while True:
    try:
        num_column = int(input('Number of columns: '))
        break
    except ValueError:
        print('Please enter an integer!')

for rows in range(num_row):
    for columns in range(num_column):
        print(rows * columns, end=' ')
    print()

Ответы [ 2 ]

1 голос
/ 08 октября 2019

2D-массив - это, по сути, массивы внутри массива, например:

[['a', 'b', 'c'],
 ['d', 'e', 'f'],
 ['g', 'h', 'i']]

Я думаю, что ваше решение является наиболее эффективным, но если вы хотите использовать 2D-массивы (обычно 2D-списки в Python), тоВы должны создать двумерный массив введенных измерений, затем выполнить итерацию по каждой строке и элементу в этой строке и умножить каждую пару индексов.

Может быть, что-то вроде этого вложено в циклы:

for i,row in enumerate(array):
    for j,item in enumerate(row):
        print(i*j,end=' ')
print()
0 голосов
/ 08 октября 2019

Сначала вам нужно инициализировать ваш 2d массив. Вот ваш модифицированный код:

while True:
    try:
        num_row = int(input("Number of rows: "))
        break
    except ValueError:
        print('Please enter an integer!')
while True:
    try:
        num_column = int(input('Number of columns: '))
        break
    except ValueError:
        print('Please enter an integer!')


# initialize the 2d array (tab) using a list-comprehension 
# e.g.: for 3 cols and 2 rows, You will have
# tab = [[0, 0, 0], [0, 0, 0]]
tab = [[0 for c in range(num_column)] for r in range(num_row)]

# to create each value of the 2d array
for rows in range(num_row):
    for columns in range(num_column):
        tab[rows][columns] = rows * columns


# to print the value of a created 2d array
for rows in range(num_row):
    for columns in range(num_column):
        print(tab[rows][columns], end= " ")
    print()

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

while True:
    try:
        num_row = int(input("Number of rows: "))
        break
    except ValueError:
        print('Please enter an integer!')

while True:
    try:
        num_column = int(input('Number of columns: '))
        break
    except ValueError:
        print('Please enter an integer!')


# initialize the 2d array (tab) using a list-comprehension 
# e.g.: for 3 cols and 2 rows, You will have
# tab = [[0, 0, 0], [0, 0, 0]]
tab = [[0 for c in range(num_column)] for r in range(num_row)]

# to create each value of the 2d array and print it at the same time
for rows in range(num_row):
    for columns in range(num_column):
        tab[rows][columns] = rows * columns
        print(tab[rows][columns], end= " ")
    print()
...