我正在尝试解决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没有接受我的回答?
答案 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)