我正在尝试解决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)

有什么想法为什么HackerRank无法满足我的要求?

最佳答案

您的输出不正确;您可以在不应该在楼梯上走的楼梯前打印一条空行。您的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 #字符。

最后但并非最不重要的一点是,您可以使用 str.rjust() method(“right-justify”的缩写)来提供空格:
def staircase(num_stairs):
    for stairs in range(1, num_stairs + 1):
        print(('#' * stairs).rjust(num_stairs))

关于python - HackerRank楼梯Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31222291/

10-08 23:31