我正在处理的代码需要输入,并且意味着返回哈希和空格的“阶梯”。例如,如果输入为5,则结果应为:
#
##
###
####
#####
我已将输入转换为空格和散列列表,然后将其转换为字符串形式,以便在与输入长度相对应的每个空格中插入\ n(例如,上面每5个字符)。但是,我的代码将结果打印在一行中。我哪里错了?
x = input()
list = []
a = x-1
while a > -1:
for i in range(0, a):
list.append(" ")
for i in range(0, (x-a)):
list.append("#")
a = a - 1
continue
z = str("".join(list))
t = 0
while t<x:
z = z[t:] + "\n" + z[:t]
t = t + x
continue
print str(z)
答案 0 :(得分:1)
从伪代码开始,用清晰的英语仔细地列出你希望程序做什么。
现在你可以把它变成Python。
首先,从用户那里获取一个号码。看起来您正在使用Python 2,因此您可以使用input()
或尝试更安全的raw_input()
并将其转换为int()
。
num = input()
从一个数字开始,直到用户的数字(包括在内),表示for
上的range
循环。在Python 2上,使用xrange()
是更好的做法。
for i in xrange(1, num+1):
下一部分将结合步骤3和4,使用字符串乘法和连接。对于空格,我们需要一个等于最大行数减去当前行号的数字。对于哈希符号,我们只需要当前行号。您可以将字符串乘以重复它,例如'hi' * 2
'hihi'
。最后,新行自动作为Python 2 print
语句中的默认结束字符。
print ' ' * (num-i) + '#' * i
把它们放在一起,它看起来像这样:
num = input()
for i in xrange(1, num+1):
print ' ' * (num-i) + '#' * i
正如您所发现的,使用复杂的计数器结构,嵌套循环,list
操作和切片实现相同的效果更难以调试。当你使它正常工作时问题不会停止 - 这样的代码也难以维护,如果你想修改程序,这是一个痛苦。请查看official Python tutorial,了解一些简洁明了的Python代码。
答案 1 :(得分:-1)
试试这个
x = input()
list1 = []
a = x-1
while a > -1:
for i in range(0, a):
list1.append(" ")
for i in range(0, (x-a)):
list1.append("#")
a = a - 1
list1.append("\n")
continue
z = str("".join(list1))
print z