在此场景中如何更改输出?

  • 本文关键字:何更改 输出 python list
  • 更新时间 :
  • 英文 :


所以我做了这段代码,它很好,但问题是我的输出在它下面有一个'none'。我该如何改变它。顺便说一句,我的代码是这样的…

def up_and_down(k):
return (*range(1, k), *range(k, 0, -1))
def diamond(k):
pad = '#'
fill = '*'
w = (2 * k) - 1
for i in up_and_down(k):
print(f'{fill * len(up_and_down(i)):{pad}^{w}}')
print(diamond(k))
def triangle(k):
w = (2 * k) - 1
pad = '#'
fill = '*'
for i in range(1, k+1):
print(f'{fill * len(up_and_down(i)):{pad}^{w}}')
print(triangle(k))

和我的输出打印出…

######*######
#####***#####
####*****####
###*******###
##*********##
#***********#
*************
#***********#
##*********##
###*******###
####*****####
#####***#####
######*######
None
######*######
#####***#####
####*****####
###*******###
##*********##
#***********#
*************
None

我怎么能确保图像返回和'none'不出现在当我使用PRINT语句吗??顺便说一句,我需要使用打印,因为这是我的教授提出的要求。

根据您所描述的内容(即需要使用print),您需要返回一个字符串,然后在函数外部打印该字符串。

def up_and_down(k):
return (*range(1, k), *range(k, 0, -1))
def diamond(k):
pad = '#'
fill = '*'
w = (2 * k) - 1
return 'n'.join(f'{fill * len(up_and_down(i)):{pad}^{w}}' for i in up_and_down(k))
def triangle(k):
w = (2 * k) - 1
pad = '#'
fill = '*'
return 'n'.join(f'{fill * len(up_and_down(i)):{pad}^{w}}' for i in range(1, k+1))
k = 10
print(diamond(k))
print(triangle(k))

如果没有显式的return,函数返回None。因此,在您的原始代码中,print(diamond(k))将类似于print(None),这就是您看到None的原因。

如果你不能使用n的原因我不能理解(但显然是由于你的教练的偏好),使用以下returns代替(返回一个生成器的行,而不是一个单一的多行字符串):

return (f'{fill * len(up_and_down(i)):{pad}^{w}}' for i in up_and_down(k))
return (f'{fill * len(up_and_down(i)):{pad}^{w}}' for i in range(1, k+1))

,然后使用

输出
for line in diamond(k):
print(line)
for line in triangle(k):
print(line)

最新更新