HackerRank Staircase Python

时间:2015-07-04 15:30:17

标签: 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)

为什么HackerRank没有接受我的回答?

10 个答案:

答案 0 :(得分:11)

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

从1开始range()n应从num_stairs - 2开始(,print添加空格:

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 #个字符。

答案 1 :(得分:3)

您可以使用rjust来证明右侧的字符串:

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

答案 2 :(得分:2)

另一种解决方案

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

答案 3 :(得分:1)

它看起来像辅助对角线

 def staircase(n):
        for i in range(n):
            for j in range (n):
                if i+j == n-1:
                    print(" "*j+"#"*(n-j))

输出-

     #
    ##
   ###
  ####
 #####
######

答案 4 :(得分:0)

for i in range(n):
    result = ' '*(n-i-1) +('#')*(i+1)
    print(result)

答案 5 :(得分:0)

def staircase(n):
    for i in range(0, n): # n rows 
        print(' '*(n-i-1) + '#'*(i+1)) # first print n-i-1 spaces followed by i '#'


n = int(input())
staircase(n)

答案 6 :(得分:0)

我遇到了一个错误,直到我用加号替换了逗号:

print(' ' * (n - i - 1) + '#' * (i + 1))

答案 7 :(得分:-1)

另一个答案

    H = int(input())
    for i in range(1,H+1):
       H = H - 1
       print(' '*(H) + ('#'*(i)))

答案 8 :(得分:-1)

你也可以简单地使用while循环。

import sys
n1=int(raw_input())-1
n2=1

while n1>=0:
    print " "*n1,"#"*n2
    n1=n1-1
    n2=n2+1

答案 9 :(得分:-2)

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