Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 哈克朗克楼梯蟒蛇_Python - Fatal编程技术网

Python 哈克朗克楼梯蟒蛇

Python 哈克朗克楼梯蟒蛇,python,Python,我试图解决HackerRank中的一个问题,我的提交有问题。我的代码在PyCharm中运行,但HackerRank不接受我的提交 以下是我试图解决的问题: 这是我的密码: def staircase(num_stairs): n = num_stairs - 1 for stairs in range(num_stairs): print ' ' * n, '#' * stairs n -= 1 print '#' * num_stairs

我试图解决HackerRank中的一个问题,我的提交有问题。我的代码在PyCharm中运行,但HackerRank不接受我的提交

以下是我试图解决的问题:

这是我的密码:

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\u 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\u楼梯
字符

最后但并非最不重要的一点是,您可以使用(右对齐的缩写)来提供空间:

def staircase(num_stairs):
    for stairs in range(1, num_stairs + 1):
        print(('#' * stairs).rjust(num_stairs))
另一个解决方案

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

另一个答案

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

您也可以简单地使用while循环

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

while n1>=0:
    print " "*n1,"#"*n2
    n1=n1-1
    n2=n2+1
您可以使用将字符串向右对齐:

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

首先,创建一个列表,然后使用join
\n'

def staircase(n):
    print("\n".join([' ' * (n-x) + '#' * x for x in range(1, n+1)]))

它看起来像次对角线

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

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

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

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

请添加一些观点以及您为什么这样做的解释。只有代码不是真正受欢迎的。请回答OPs问题:“有什么想法为什么HackerRank不接受我的答案吗?”您是否建议OP的代码有问题,可以使用此代码来解决?
 def staircase(n):
        for i in range(n):
            for j in range (n):
                if i+j == n-1:
                    print(" "*j+"#"*(n-j))
     #
    ##
   ###
  ####
 #####
######
print(' ' * (n - i - 1) + '#' * (i + 1))