Распечатать диапазон положительных целых чисел в возрастающем и обратном порядке - Python - PullRequest
0 голосов
/ 11 ноября 2018

Я хотел бы напечатать вывод в виде палиндромного треугольника положительных чисел (без 0), либо через пользовательский ввод int(input()):

for i in range(1,int(input())+1):
   print(*range(1, i+1),(*range(i-1, -1, -1)))

или как фиксированный диапазон, например:

for n in range(1,5):
  print(*range(1, n+1),(*range(n-1, -1, -1))

Я могу заставить последний работать так далеко, но я бы хотел, чтобы без 0. Две дополнительные проблемы: 1) Будет ли пользовательский ввод 5 совпадать с жестко закодированным 5 в диапазоне? 2) Как получить 5 включенных в вывод? Есть идеи, как это можно сделать? Заранее спасибо.

1 0
1 2 1 0
1 2 3 2 1 0
1 2 3 4 3 2 1 0

Ответы [ 3 ]

0 голосов
/ 11 ноября 2018

Ваша индексация немного отличается:

user_range = int(input("Desired limit : ")) + 1

for n in range(1, user_range):
  print(*range(1, n+1),(*range(n-1, 0, -1)))

выход:

1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
0 голосов
/ 11 ноября 2018

Отличная работа с этими диапазонами и сплатами. Я не вижу ничего плохого в нарезке.

for n in range(1,5):
  print(*range(1, n+1), *range(n-1, -1, -1)[:-1])

Кто-то еще сказал это, и похоже, работает так же:

for n in range(1,5):
  print(*range(1, n+1), *range(n-1, 0, -1))
0 голосов
/ 11 ноября 2018

Это то, что вы хотите? Вместо жесткого кодирования 5 мы запрашиваем ввод от пользователя. И небольшая модификация индексации.

for i in range(1,int(input("Enter number : "))+1):
    print(*range(1,i+1), *range(i-1,-1,-1))

Ouput:

Enter number : 7
1 0
1 2 1 0
1 2 3 2 1 0
1 2 3 4 3 2 1 0
1 2 3 4 5 4 3 2 1 0
1 2 3 4 5 6 5 4 3 2 1 0
1 2 3 4 5 6 7 6 5 4 3 2 1 0
...