Python 哈克朗克楼梯蟒蛇
我试图解决HackerRank中的一个问题,我的提交有问题。我的代码在PyCharm中运行,但HackerRank不接受我的提交 以下是我试图解决的问题: 这是我的密码: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
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))