输出一个 n 阶的方阵?

n,digit= map(int, input().split())
b=digit-1
c=n-1
for i in range(n):
    if i==0:
        for i in range(n):
            print(digit, end=(' '))
    if i==c:
        for i in range(n):
            print(digit,end=(' '))
    if i>0 and i<n-1:
        for i in range(n):
            if i==0:
                print(digit, end=(' '))
            if i==n-1:
                print(digit, end=(' '))
            if i>0 and i<n-1:
                print(b, end=(' '))
    print()

这个代码为什么加粗的地方在上面那个if输出后这个if就一定输出

输入4 2

这是代码输出的结果

2 2 2 2 2 2 2 2 
2 1 1 2 
2 1 1 2 
2 2 2 2 
 

这是想要输出的结果

2 2 2 2 
2 1 1 2 
2 1 1 2 
2 2 2 2 

因为上面的for循环结束后,i=n-1

 你说的那个问题是由于当i=0时,你的for i in range(n),里面又用了i,这里的最后一个i是n-1,c正好也是n-1,所以相等了,就又 print(digit,end=(' ')),把i改成j就可以了

n,digit= map(int, input().split())
b=digit-1
c=n-1
for i in range(n):
    if i==0:
        for j in range(n):
            print(digit, end=(' '))
    if i==c:
        for j in range(n):
            print(digit,end=(' '))
    if i>0 and i<n-1:
        for j in range(n):
            if j==0:
                print(digit, end=(' '))
            if j==n-1:
                print(digit, end=(' '))
            if j>0 and j<n-1:
                print(b, end=(' '))
    print()

当然最好是写成下面这样,用if...else,还有or

n,digit= map(int, input().split())
for i in range(n):
    if i==0 or i==n-1:
        for j in range(n):
            print(digit, end=(' '))
    else:
        for j in range(n):
            if j==0 or j==n-1:
                print(digit, end=(' '))
            else:
                print(digit-1, end=(' '))
    print()

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

这是因为在第一个if 循环后i的取值发生了变化,这时的i=3,你在第一个if循环后添加print(*),print(i),就能看到,符合了第二个if的判断条件,因此第二个if继续执行。要获得想要的结果,需要用if else来选择两者只执行一个,将第二个if 改成elif即可。

n, digit = map(int, input().split())
b = digit-1
c = n-1
for i in range(n):
    if i == 0:
        for i in range(n):
            print(digit, end=(' '))
    elif i == c:
        for i in range(n):
            print(digit, end=(' '))
    if i > 0 and i < n-1:
        for i in range(n):
            if i == 0:
                print(digit, end=(' '))
            if i == n-1:
                print(digit, end=(' '))
            if i > 0 and i < n-1:
                print(b, end=(' '))
    print()