我一直试图用向前和向后的斜线制作钻石,到目前为止,我有这段代码:
def upper_diamond(level,length):
if level <=length:
print(" " * (length - level), end="")
print("/", end="")
print(" " * 2 * (level-1), end=" ")
print("\\")
upper_diamond(level + 1,length)
def lower_diamond(level,length):
def diamond(length):
upper_diamond(1,length)
diamond(4)
当我打印出来时就是这样:
/ \
/ \
/ \
/ \
我想制作一个完整的钻石并使底部部分难以理解,如何用钻石的其余部分制作下半部分?
答案 0 :(得分:1)
基于你的代码,你可以复制相同的行为来调整偏移量(在将间隔部分改为end
之后为空字符串以避免打开边缘):
def upper_diamond (level, length):
if level <= length:
print(' ' * (length - level), end='')
print('/', end='')
print(' ' * 2 * (level - 1), end='')
print('\\')
upper_diamond(level + 1, length)
def lower_diamond (level, length):
if level <= length:
print(' ' * (level - 1), end='')
print('\\', end='')
print(' ' * 2 * (length - level), end='')
print('/')
lower_diamond(level + 1, length)
def diamond(length):
upper_diamond(1, length)
lower_diamond(1, length)
diamond(4)
输出:
/\
/ \
/ \
/ \
\ /
\ /
\ /
\/
答案 1 :(得分:0)
您还可以将其简化为单个功能,您可以在其中指定钻石每侧使用的尺寸和字符。而不是打印每一行,使用该函数构建整个字符串然后打印返回的字符串可能更清晰。
def build_diamond(half_width=4, char_tl='/', char_tr='\\', char_bl='\\', char_br='/'):
top_rows = []
bot_rows = []
for i in range(half_width):
offset = (half_width - i - 1)
top_rows.append(offset * ' ' + (2 * i * ' ').join((char_tl, char_tr)))
bot_rows.append(i * ' ' + (2 * offset * ' ').join((char_bl, char_br)))
return '\n'.join(top_rows + bot_rows)
print(build_diamond())
结果:
/\
/ \
/ \
/ \
\ /
\ /
\ /
\/