哈克朗楼梯Python

2024-04-27 18:03:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决HackerRank中的一个问题,我的提交有问题。我的代码在PyCharm中工作,但HackerRank不接受我的提交。

这是我要解决的问题:https://www.hackerrank.com/challenges/staircase

这是我的代码:

def staircase(num_stairs):
    n = num_stairs - 1
    for stairs in range(num_stairs):
        print ' ' * n, '#' * stairs
        n -= 1
    print '#' * num_stairs
staircase(12)

你知道为什么哈克朗不接受我的回答吗?


Tags: 代码inhttpscomfordefwwwnum
3条回答

可以使用rjust将字符串向右对齐:

def staircase(n):
    for i in range(1, n+1):
         print(("#" * i).rjust(n))

另一个解决方案

n = int(raw_input())
s = '#'
for i in xrange( 1 , n+1):
    print " "*(n-i) + s*i

您的输出不正确;您在楼梯前打印了一条不应存在的空行。您的range()循环从0开始,因此您在第一行打印n空格和零个#字符。

从1开始range(),并且n应该从num_stairs - 2开始(因为print()的多个参数添加了一个空格:

from __future__ import print_function

def staircase(num_stairs):
    n = num_stairs - 2
    for stairs in range(1, num_stairs):
        print(' ' * n, '#' * stairs)
        n -= 1
    print('#' * num_stairs)

您可以将其简化为一个循环:

def staircase(num_stairs):
    for stairs in range(1, num_stairs + 1):
        print(' ' * (num_stairs - stairs) + '#' * stairs)

注意,我现在使用连接来组合空格和#字符,以便在循环的最后一次迭代中打印零空格和num_stairs#字符。

最后但并非最不重要的是,您可以使用^{} method(简称“右对齐”)来提供空间:

def staircase(num_stairs):
    for stairs in range(1, num_stairs + 1):
        print(('#' * stairs).rjust(num_stairs))

相关问题 更多 >