我正在处理的代码接受一个输入,并打算返回散列和空格的“阶梯”。例如,如果输入为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)
从伪代码开始,用清晰的英语仔细地列出你想要程序做什么
现在你可以把它变成Python了
首先,从用户那里得到一个数字。看起来您使用的是python2,因此可以使用
input()
或尝试更安全的raw_input()
并将其转换为int()
从一开始遍历每个数字直到用户的数字(包含在内),意味着在
range
上的for
循环。在python2上,使用xrange()
是更好的做法下一部分将结合步骤3和4,使用字符串乘法和串联。对于空间,我们需要一个等于最大行数减去当前行数的数。对于散列符号,我们只需要当前行号。可以将字符串相乘以重复它,例如
'hi' * 2
表示'hihi'
。最后,换行符作为python2print
语句中的默认结束字符自动处理把它们放在一起,看起来是这样的:
正如您所发现的,使用复杂的计数器、嵌套循环、
list
操作和切片结构来实现相同的效果更难调试。当你让它正常工作时,问题也不会停止——这样的代码也很难维护,如果你想修改程序的话,这是一种痛苦。看看official Python tutorial中一些清晰、简洁的Python代码的好例子试试这个
相关问题 更多 >
编程相关推荐