3 回答
TA贡献1783条经验 获得超4个赞
在此示例中,您要查看的行数是与输入 + 1 相加的整数。1+2+3+4 = 10 = 9+1。将有 4 行,并且在每行上您想要跟踪该行上的字母数。使用更好的变量名称可以更轻松地遵循代码。
input = 9
n_lines = 1
i = 1
while i < input:
i += n_lines
n_lines += 1
for line_number in range(n_lines):
number_letters = n_lines - line_number # This will be number of letters: 4, 3, 2, 1
for i in range(number_letters - 1):
print("q", end="")
print("p")
TA贡献1836条经验 获得超4个赞
我对你的代码做了一些更改(与 python 3 一起使用)
input_num = int(input())
number = int((input_num + 1) / 2 - 1)
def print_line(line_length):
if line_length % 2 == 1:
# start with p
letters = ['p', 'q']
else:
# start with q
letters = ['q', 'p']
for i in range(line_length):
pos = i % 2
# print the relevant letter
print(letters[pos], end=' ')
print()
我做了一个知道如何打印特定行的方法。
它接收line_length
并知道如何打印 p 和 q。
如果行长是奇数,我们需要从 p 开始
1 - p
3-pqp
5 - pqpqp
ETC..
如果线长是偶数,我们从 q 开始
2 - qp
4 - qpqp
6 - qpqpqp
ETC...
for n in range(number, 0, -1):
print_line(n)
添加回答
举报