所以我做了这段代码,它很好,但问题是我的输出在它下面有一个'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
的原因我不能理解(但显然是由于你的教练的偏好),使用以下return
s代替(返回一个生成器的行,而不是一个单一的多行字符串):
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)