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()