使用字母表可以在PYTHON中获取此模式
想要的图案是这样的吗 使用此代码使用字母表可以在PYTHON中获取此模式,python,python-3.x,Python,Python 3.x,想要的图案是这样的吗 使用此代码 order = int(input("Enter the order : ")) c = ord("A") d = 1 for i in range(order,0,-1): for j in range(i): print(" ",end=" ") for k in range(1,d+1): #c=c-1 print(chr(c),end=" ") c=c+1 d=d+
order = int(input("Enter the order : "))
c = ord("A")
d = 1
for i in range(order,0,-1):
for j in range(i):
print(" ",end=" ")
for k in range(1,d+1):
#c=c-1
print(chr(c),end=" ")
c=c+1
d=d+1
print()
我得到了这个模式:
A
B C
D E F
G H I J
当您打印(chr(c))
时,您基本上需要反转c
移动的方向,因为您希望以相反的顺序打印字母。这很简单,只需要几行额外的代码就可以完成
首先,c
应该从要打印的字符(在该特定行上)的最后一个(按字母顺序)ascii值开始。这是通过在循环的for k
for之前说c+=d
来实现的
然后,因为我们要向后走,我们需要每次将c
递减1。我们在for k
循环的最开始添加c-=1
最后,我们需要将c
推回到下一个字母。因为我们打印了d
字母,所以我们只需在k循环的之后添加c+=d
。这最后一点可能看起来有点混乱。例如,打印的行之一是jihg
。打印此行后,c
的ascii值为G
,但我们希望能够打印J
之后的下一个字母,而不是G
,这就是为什么我们再次添加d
的值
完成的代码是
order=int(输入(“输入顺序:”)
c=作战需求文件(“A”)
d=1
对于范围内的i(顺序为0,-1):
对于范围(i)中的j:
打印(“,end=”“)
c+=d
对于范围(d)中的k:
c-=1
打印(chr(c),end=“”)
c+=d
d+=1
打印()
输出:
Enter the order : 6
A
C B
F E D
J I H G
O N M L K
U T S R Q P
A
C B
F E D
J I H G
O N M L K
p.S
与其写x=x+1
,不如说x+=1
。这是所有其他数学运算的情况x=x*3
可以重新编写为x*=3
李>
对于范围(1,d+1)中的k
可以更简洁地写成对于范围(d)中的k
当您打印(chr(c))
时,您基本上需要反转c
移动的方向,因为您希望以相反的顺序打印字母。这很简单,只需要几行额外的代码就可以完成
首先,c
应该从要打印的字符(在该特定行上)的最后一个(按字母顺序)ascii值开始。这是通过在循环的for k
for之前说c+=d
来实现的
然后,因为我们要向后走,我们需要每次将c
递减1。我们在for k
循环的最开始添加c-=1
最后,我们需要将c
推回到下一个字母。因为我们打印了d
字母,所以我们只需在k
循环的之后添加c+=d
。这最后一点可能看起来有点混乱。例如,打印的行之一是jihg
。打印此行后,c
的ascii值为G
,但我们希望能够打印J
之后的下一个字母,而不是G
,这就是为什么我们再次添加d
的值
完成的代码是
order=int(输入(“输入顺序:”)
c=作战需求文件(“A”)
d=1
对于范围内的i(顺序为0,-1):
对于范围(i)中的j:
打印(“,end=”“)
c+=d
对于范围(d)中的k:
c-=1
打印(chr(c),end=“”)
c+=d
d+=1
打印()
输出:
Enter the order : 6
A
C B
F E D
J I H G
O N M L K
U T S R Q P
A
C B
F E D
J I H G
O N M L K
p.S
与其写x=x+1
,不如说x+=1
。这是所有其他数学运算的情况x=x*3
可以重新编写为x*=3
李>
对于范围(1,d+1)中的k
可以更简洁地写成对于范围(d)中的k
使用相同的方法,稍微更改第二个内部循环以及更新c
的方式:
order = int(input("Enter the order : "))
c = ord("A")
d = 1
for i in range(order,0,-1):
for j in range(i):
print(" ",end=" ")
for k in range(0, d): # iter from 0 to number of letters in the row
print(chr(c - k),end=" ") # backtrack from starting letter
d=d+1 # increment d before updating c
c = c + d # update c to be the starting letter of the next row
print()
返回
Enter the order : 4
A
C B
F E D
J I H G
使用相同的方法,稍微更改第二个内部循环以及更新c
的方式:
order = int(input("Enter the order : "))
c = ord("A")
d = 1
for i in range(order,0,-1):
for j in range(i):
print(" ",end=" ")
for k in range(0, d): # iter from 0 to number of letters in the row
print(chr(c - k),end=" ") # backtrack from starting letter
d=d+1 # increment d before updating c
c = c + d # update c to be the starting letter of the next row
print()
返回
Enter the order : 4
A
C B
F E D
J I H G
下面是一个创建输出的简单方法
cols = int(input("Enter the order : "))
end = cols - 1
c = ord('A')
for r in range(cols):
l = [chr(c+count) for count in range(cols-end)]
c=c+len(l)
l.extend(' '*end)
end = end -1
l.reverse()
print(' '.join(l))
输出:
Enter the order : 6
A
C B
F E D
J I H G
O N M L K
U T S R Q P
A
C B
F E D
J I H G
O N M L K
下面是一个创建输出的简单方法
cols = int(input("Enter the order : "))
end = cols - 1
c = ord('A')
for r in range(cols):
l = [chr(c+count) for count in range(cols-end)]
c=c+len(l)
l.extend(' '*end)
end = end -1
l.reverse()
print(' '.join(l))
输出:
Enter the order : 6
A
C B
F E D
J I H G
O N M L K
U T S R Q P
A
C B
F E D
J I H G
O N M L K
谢谢你的回答,也谢谢你的建议。我是一个新的程序员,所以我不太熟悉短版本。谢谢你的回答,也谢谢你的建议。我是一个新的程序员,所以我不太熟悉短版本。