enter image description here

मैंने निम्नलिखित कोड लिखा है और यह चलता है लेकिन मैं लूप के लिए 4 का उपयोग कर रहा हूं और मैं जानना चाहता हूं कि इस कोड को लिखने का कोई और प्रभावी तरीका है या नहीं।

n = int(input('Please Enter the highest number \n'))
col = 2*n-1
for i in range(1, n+1):
  for j in range(1, col+1):
    if j >= i and j <= col-i+1:
      print(n-i+1, end=' ')
    elif j < i:
      print(n+1-j, end=' ')
    else:
      print(j+1-n, end=' ')
print()

for i in range(n-1, 0, -1):
  for j in range(1, col+1):
    if j >= i and j <= col - i + 1:
      print(n-i+1, end=' ')
    elif j < i:
      print(n + 1 - j, end=' ')
    else:
      print(j + 1 - n, end=' ')
print()
1
Mathematics 10 अप्रैल 2021, 15:27

2 जवाब

सबसे बढ़िया उत्तर

आप केंद्र (di, dj) के सापेक्ष स्थिति ढूंढ सकते हैं, और फिर उस सेल के लिए लेबल के रूप में इसके सबसे बड़े घटक का उपयोग कर सकते हैं:

n = int(input('Please Enter the highest number \n'))
col = 2 * n
for i in range(1, col):
    row = []
    for j in range(1, col):
        di, dj = abs(n-i), abs(n-j)
        row.append(max(di,dj) + 1)
    print(' '.join(str(x) for x in row))

2
F. Gyllenhammar 10 अप्रैल 2021, 13:50
  1. चूंकि आंतरिक लूप समान हैं, आप दो बाहरी लूपों को एक में मिला सकते हैं, उदा। दो श्रेणियों का पीछा करके:
from itertools import chain

...

for i in chain(range(1, n + 1), range(n - 1, 0, -1)):

    ...
  1. इस तरह की स्थिति को सरल बनाया जा सकता है:
i <= j <= col - i + 1
0
mportes 10 अप्रैल 2021, 13:30