Неправленные выходные значения при большом входном значении переменной n, например 1000 и скривостью числовых диагоналей

Андрей)))))))))))))

Новичок
Пользователь
Июл 11, 2020
11
0
1
Ос - windows 10 Home
Python 3
Библиотек нет

Здравствуйте. Создал программу, которая должна создавать по числу n квадратный массив и заполнять его по такому принципу: на главной диагонали матрицы должны быть нули, на следующих двух прилегающих к ней должны быть 1-ки и т. д. Первый вопрос - как улучшить вывод, чтобы из - за перехода чисел из одного разряда в другой диагональ получалась не кривой; второй вопрос - как сделать так чтобы алгоритм выводил правильные числовые значения для диагоналей, при больших числах n, например при числе 1000. Заранее спасибо.

Для копирования:
Python:
n = int(input('Введите n: '))
a = []
g = 0


for i in range(n):
    a.append([0] * n)


for i in range(n):
    s = g

    for h in range(n):


        if h < g:

            if g - h == 1:

                a[h] = s

            else:


                a[h] = s

                s -= 1


        elif h > g:


            if i == 0:


                s += 1

                a[h] = s


            else:


                a[h] = s

                s += 1


        print(a[h], end=' ')

    g += 1
    print()
 
Последнее редактирование:

Jerry

Пользователь
Пользователь
Июл 28, 2020
29
12
3
Если вставить код через
chrome_RnKWCdmPY0.png
и далее выбрать питон, то он будет соответствующим образом отформатирован и его можно будет прочитать и скопипастить для быстрого запуска у себя.
 
  • Мне нравится
Реакции: Андрей)))))))))))))

Андрей)))))))))))))

Новичок
Пользователь
Июл 11, 2020
11
0
1
Спасибо
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Создал программу, которая должна создавать по числу n квадратный массив
В вашей программе массив создается неправильно. Можете после создания вывести его в консоль при помощи print и убедиться.
на главной диагонали матрицы должны быть нули, на следующих двух прилегающих к ней должны быть 1-ки и т. д.
Нулей на главной диагонали тоже нет
Вот пример с правильной матрицей, нулями на главной диагонали и решением этой проблемы
как улучшить вывод, чтобы из - за перехода чисел из одного разряда в другой диагональ получалась не кривой
Python:
# дополняет слева число нулями чтобы вывод был более ровным
def get_format_string(s, n):
        return '{:0{}}'.format(s, len(str(n)))

    n = int(input('Введите n: '))
    a = []
    g = 0

    a = [0 for i in range(n)]

    for i in range(n):
        s = g
        for h in range(n):
            if h < g:
                if g - h == 1:
                    a[h] = get_format_string(s, n)

                else:
                    a[h] = get_format_string(s, n)
                    s -= 1

            elif h > g:
                if i == 0:
                    s += 1
                    a[h] = get_format_string(s, n)
                else:
                    a[h] = get_format_string(s, n)
                    s += 1
            elif g == h:
                a[h] = get_format_string(0, n)

            print(a[h], end=' ')
        g += 1
        print()
 

Андрей)))))))))))))

Новичок
Пользователь
Июл 11, 2020
11
0
1
А если заменить нули перед числами на пробелы: вывод получиться еще лучшее и у вас также получается не правильный массив
 

Форум IT Специалистов