我已经被赋予了在python中创建螺旋的任务,其中用户输入一个数字,例如3,它将输出一个3x3螺旋,如下所示:
- - \
/ \ |
\ - /
Run Code Online (Sandbox Code Playgroud)
我不是在寻找完整的代码我只是不知道如何去做,显然使用if语句打印出所有可能的解决方案是不可能的或合乎逻辑的.这里真正的问题是我应该做什么,for循环,定义我自己的功能?有没有人可以链接我的文件,这将有所帮助.完整的任务大纲如下:
你的任务是编写一个程序,在一个盒子里面绘制一个给定大小的螺旋.
您的程序应该询问用户一个表示盒子大小的正整数.然后你的程序应该在那个大小的盒子里打印出一个螺旋形.
例如:
Run Code Online (Sandbox Code Playgroud)Enter size: 3 - - \ / \ | \ - /和:
Run Code Online (Sandbox Code Playgroud)Enter size: 4 - - - \ / - \ | | \ / | \ - - /和:
Run Code Online (Sandbox Code Playgroud)Enter size: 5 - - - - \ / - - \ | | / \ | | | \ - / | \ - - - /输入大小始终大于1.
Joh*_*man 15
我尊重你不想要完整的代码.这故意只是部分答案.
首先制作一个二维数组.就像是:
grid = [[None]*n for i in range(n)]
Run Code Online (Sandbox Code Playgroud)
这允许你编写像这样的代码grid[i][j] = '\'.
从开始i,j = 0,0.在围绕网格的循环螺旋中.它可能有助于获得一个变量direction,该变量将值'right', 'left', 'up', 'down'与相应的取值相加(delta例如(0,1)向右移动)(i,j)以实现移动.
沿着某个方向沿着一条线放置' - '或'|' 直到你到达角落(检查None整个网格的限制).当你到达一个角落时,放置适当的角标记并改变方向.
填充网格后,使用空字符串分隔符连接每一行,并将结果'\n'作为分隔符连接.
Mar*_*oun 14
注意事项:
-秒和1\- s,从开头到\结尾/例如,当时n为4:
第一行:- - - \
最后一行:\ - - /
使用可以轻松实现:
def get_first_raw(n):
return '- ' * (n - 1) + '\\'
def get_last_raw(n):
return '\\ ' + '- ' * (n - 2) + '/'
Run Code Online (Sandbox Code Playgroud)
现在关于螺旋体,请注意以下几点:
对于n = 3:
- - \
/ \ |
\ - /
Run Code Online (Sandbox Code Playgroud)
对于n = 5:
对于n = 6:
请注意,其中包含 4螺旋,红色框是固定的.只有它们的长度根据n而变化.
它包含在里面.并且在n = 7之前,n = 5包含在其中.对于n = 2k也是如此,每个n将包含n/2个螺旋.
我在这里试图说你手动绘制n = 3和n = 2.如果螺旋应该是偶数,你使用n = 2模式,构造第一行和最后一行,并使用循环,你可以附加螺旋体.
n = 5的示例:
def get_spiral(n):
res = []
res.append(get_first_raw(n))
res.append('/ ' + spiral[0] + ' |')
for line in spiral[1:]:
res.append('| ' + line + ' |')
res.append(get_last_raw(n))
return res
print '\n'.join(get_spiral(5))
Run Code Online (Sandbox Code Playgroud)
spiral大小为3的初始螺旋在哪里:
spiral = ['- - \\', '/ \ |', '\ - /']
Run Code Online (Sandbox Code Playgroud)
为了生成7螺旋,你可以:
spiral = build_spiral(5)
print '\n'.join(build_spiral(7))
Run Code Online (Sandbox Code Playgroud)
你会得到:
- - - - - - \
/ - - - - \ |
| / - - \ | |
| | / \ | | |
| | \ - / | |
| \ - - - / |
\ - - - - - /
Run Code Online (Sandbox Code Playgroud)
当然这可以改进,你可以使程序更有效率,我只是想给你一个指导,并分享我的想法..
这里有更多有趣的螺旋:
- - - - - - - - - - \
/ - - - - - - - - \ |
| / - - - - - - \ | |
| | / - - - - \ | | |
| | | / - - \ | | | |
| | | | / \ | | | | |
| | | | \ - / | | | |
| | | \ - - - / | | |
| | \ - - - - - / | |
| \ - - - - - - - / |
\ - - - - - - - - - /
Run Code Online (Sandbox Code Playgroud)
- - - - - - - - - - - - - - - - - - - - - - - - \
/ - - - - - - - - - - - - - - - - - - - - - - \ |
| / - - - - - - - - - - - - - - - - - - - - \ | |
| | / - - - - - - - - - - - - - - - - - - \ | | |
| | | / - - - - - - - - - - - - - - - - \ | | | |
| | | | / - - - - - - - - - - - - - - \ | | | | |
| | | | | / - - - - - - - - - - - - \ | | | | | |
| | | | | | / - - - - - - - - - - \ | | | | | | |
| | | | | | | / - - - - - - - - \ | | | | | | | |
| | | | | | | | / - - - - - - \ | | | | | | | | |
| | | | | | | | | / - - - - \ | | | | | | | | | |
| | | | | | | | | | / - - \ | | | | | | | | | | |
| | | | | | | | | | | / \ | | | | | | | | | | | |
| | | | | | | | | | | \ - / | | | | | | | | | | |
| | | | | | | | | | \ - - - / | | | | | | | | | |
| | | | | | | | | \ - - - - - / | | | | | | | | |
| | | | | | | | \ - - - - - - - / | | | | | | | |
| | | | | | | \ - - - - - - - - - / | | | | | | |
| | | | | | \ - - - - - - - - - - - / | | | | | |
| | | | | \ - - - - - - - - - - - - - / | | | | |
| | | | \ - - - - - - - - - - - - - - - / | | | |
| | | \ - - - - - - - - - - - - - - - - - / | | |
| | \ - - - - - - - - - - - - - - - - - - - / | |
| \ - - - - - - - - - - - - - - - - - - - - - / |
\ - - - - - - - - - - - - - - - - - - - - - - - /
Run Code Online (Sandbox Code Playgroud)
您还可以免费获得金字塔的顶视图
| 归档时间: |
|
| 查看次数: |
1575 次 |
| 最近记录: |