Программа для создания двумерного массива из случайных символов. Но она заполняет его одним случайным элементом

Аватара пользователя
alexrozd8
Сообщения: 7
Зарегистрирован: 15 ноя 2017, 15:29

Программа для создания двумерного массива из случайных символов. Но она заполняет его одним случайным элементом

16 ноя 2017, 22:07

Вот код:

Код: Выделить всё

import random

lines = int(input("Enter number of lines: "))

for j in range(lines):
  n = random.randint(0,50)
  mass = [[n] * lines for i in range(lines)]

for iter in mass:
  print(' '.join([str(elem) for elem in iter]))
  [/code[

Аватара пользователя
stepanovyri
Сообщения: 17
Зарегистрирован: 15 ноя 2017, 15:27

Re: Программа для создания двумерного массива из случайных символов. Но она заполняет его одним случайным элементом

16 ноя 2017, 22:09

Код: Выделить всё

In [10]: import random                                                                                

In [11]: def get_random_matrix(rows_count):                                                           
    ...:     matrix = [[random.randint(0, 50) for _ in range(rows_count)] for _ in range(rows_count)] 
    ...:     return matrix     

Результат:

Код: Выделить всё

In [12]: get_random_matrix(5)                                                                         
Out[12]:                                                                                              
[[15, 23, 48, 48, 6],                                                                                 
 [44, 48, 0, 7, 23],                                                                                  
 [24, 15, 25, 11, 49],                                                                                
 [49, 5, 40, 3, 22],                                                                                  
 [43, 0, 44, 47, 16]]     

Заметил что в этом куске кода:

Код: Выделить всё

for iter in mass:

Вы указали не советую так делать, так как это зарезервированное слово в Python:

Код: Выделить всё

In [1]: iter
Out[1]: <function iter>

Аватара пользователя
constan.costia
Сообщения: 16
Зарегистрирован: 15 ноя 2017, 16:49

Re: Программа для создания двумерного массива из случайных символов. Но она заполняет его одним случайным элементом

16 ноя 2017, 22:12

Попробуйте так:

Код: Выделить всё

mass = [[random.randint(0,50) for i in range(lines)] for j in range(lines)]

Аватара пользователя
ivenati
Сообщения: 3
Зарегистрирован: 15 ноя 2017, 17:28

Re: Программа для создания двумерного массива из случайных символов. Но она заполняет его одним случайным элементом

16 ноя 2017, 22:19

Воспользуйтесь примитивной отладкой (вывод на печать) - и все сразу станет понятно:

Код: Выделить всё

In [38]: lines = 3

In [39]: for j in range(lines):
    ...:   n = random.randint(0,50)
    ...:   mass = [[n] * lines for i in range(lines)]
    ...:   print(mass)
    ...:
[[30, 30, 30], [30, 30, 30], [30, 30, 30]]
[[29, 29, 29], [29, 29, 29], [29, 29, 29]]
[[45, 45, 45], [45, 45, 45], [45, 45, 45]]

In [40]: print(mass)
[[45, 45, 45], [45, 45, 45], [45, 45, 45]]
Если у вас практическая, а не академическая задача, то можно воспользоваться Numpy:

Код: Выделить всё

In [30]: import numpy as np

In [31]: lines = 10

In [32]: mass = np.random.randint(50, size=(lines,lines))

In [33]: mass
Out[33]:
array([[26, 11, 45, 26,  1, 13, 24, 15, 23, 32],
       [38, 44,  6,  9, 40, 11, 41, 15, 25, 22],
       [47, 48, 12, 12,  4, 24, 41, 20, 29, 39],
       [39, 33, 16,  3, 23, 14, 49, 23, 37, 48],
       [27, 23, 47, 17, 29, 34, 24, 42, 33,  3],
       [ 1, 32, 43, 39, 37, 27, 42, 38, 33, 48],
       [49, 12, 15, 21, 30, 28,  9, 20, 24, 13],
       [ 3, 11, 21, 44, 14, 12,  2, 38, 10,  1],
       [12, 27, 26, 19, 23, 21, 39, 28, 26, 32],
       [36, 28, 20, 44,  3,  4,  7, 34,  7, 31]])

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость