我希望将“波浪”模式打印到控制台,例如:
/\
/ \
/
或者:
/\
/ \
\
\
最后,显示为一个大的多波:
/\ /\
/ \/ \
/ \
\
基于描述向上/向前或向下/向后方向/斜线中斜线数量的整数列表。我定义了两个函数,一个用于波的左侧最长,反之亦然:
from itertools import zip_longest
def left_wave(water_l, water_r):
"""When left side of wave is largest"""
l_str = " " * water_l + "/"
if water_r == 1:
r_str = "\\"
elif water_r:
r_str = " " * (water_r * 2 - 2) + "\\"
else:
r_str = ""
line = l_str + r_str
print(line)
def right_wave(water_l, water_r):
"""When right side of wave is largest"""
if water_l:
l_str = " " * water_l + "/"
factor_r = water_r * 2 - 2
else:
l_str = " "
factor_r = water_r * 2 - 2
r_str = " " * factor_r + "\\"
line = l_str + r_str
print(line)
我调用的print_sequence()定义如下:
def print_sequence(args):
"""Show all waves."""
for wave_height_l, wave_height_r in zip_longest(args[0::2], args[1::2], fillvalue=0):
for water_l, water_r in zip_longest(reversed(range(1, wave_height_l + 1)),
range(1, wave_height_r + 1),
fillvalue=0):
if wave_height_l > wave_height_r:
left_wave(water_l, water_r)
else:
right_wave(water_l, water_r)
运行如下:
args = [11, 2,
5, 7,
# 4
]
print_sequence(args)
目前返回:
/\
/ \
/
/
/
/
/
/
/
/
/
/\
/ \
/ \
/ \
/ \
\
\
我现在正在努力解决的主要问题是:我在right_wave函数中犯的逻辑错误是什么?(缩进是错误的)。此外,我将如何开始在同一行上打印 2 个波浪?也许end=""在打印函数调用中用作参数?
喵喵时光机
慕码人2483693
呼如林
随时随地看视频慕课网APP
相关分类