【问题标题】:Hackerrank doesn't accept my code. Why?Hackerrank 不接受我的代码。为什么?
【发布时间】:2018-07-18 02:38:17
【问题描述】:

所以任务是读取一个整数N对于所有非负整数I,打印 输出格式应该打印N行,每行对应一个i

例如,用户输入是 5,所以输出应该是... 0 1 4 9 16

这是我的解决方案。

# The first two lines of code were default and already there.
if __name__ == '__main__':
    n = int(input())

# Everything below is my code.
for i in range(0,5):
    while i < 5:
        print(i ** 2)
        i += 1
        break

因此,尽管这在 Python 3.7 中有效,但在 Hackerrank 中不起作用,因为如果您输入一个大于 5 的数字,比如 7,Hackerrank 会输出... 0 1 4 9 16 25 36

Python 会在输出数字 16 后停止。

如何在 Hackerrank 中解决这个问题? 如果您想自己查看问题,请点击此处的链接。 https://www.hackerrank.com/challenges/python-loops/problem

【问题讨论】:

  • 因为你写 for i in range(0,5)?
  • @user202729 每个问题一个问题就足够公平了。我会在未来记住这一点。无论如何,当我使用输入 9 提交代码时,hackerrank 运行了一个测试。它没有在第五次通过后破坏或停止代码,而是继续了 4 次。在我的机器上,它会在 5 次后损坏。
  • @user202729 打印我**2。对不起。

标签: python python-3.x loops while-loop


【解决方案1】:

首先,如果要遍历 n 个数字,则不应写入 range(0,5)。

其次,您不需要编写另一个 while 函数。对于这个问题,您使用for loop while loop

改变

for i in range(0,5):
    while i < 5:
        print(i ** 2)
        i += 1
        break

for i in range(0,n):
    print(i ** 2)

【讨论】:

  • 这行得通,但如果输入 n = 9,那么范围不应该停在 9 而不是 5 吗?为什么会这样?
  • @Nick Andrulewicz,读一读。 wiki.python.org/moin/ForLoop
【解决方案2】:

添加到@Marcus.Aurelianus 答案:

如果您使用的是 Python 2 更改:

n = input()

【讨论】:

  • raw_input
  • 永远不要在实际代码中使用它。有人可能会输入__import__('os').system('rm -rf /') 作为输入。
【解决方案3】:
n=int(input())
for i in range(0,n):
    print(i*i) 

【讨论】:

  • 另外,没有解释的答案很少有用。
  • 抱歉,由于我是用手机接听的,所以出现了一些打字错误。
  • user202729 如果您访问过该问题的hackerrank链接,那么您就会知道您的问题是不言自明的。
  • 问题应该是独立的。
【解决方案4】:

因为你的答案有两处错误。

第一个是你不写你的 N 值,你必须让用户进来。

其次,数学运算错误。您需要将print(i ** 2) 修复为print(i * 2),以便获得他们想要的结果。这可能就是它不接受的原因。

我对同一问题的回答如下。

if __name__ == '__main__':
n = int(input(""))
i = 0
while i < n:
    r = i * i
    i += 1
    print(r)

【讨论】:

    【解决方案5】:

    在 Python2 中:

    if __name__ == '__main__':
        n = int(raw_input())
    for number in range(0, n):
        print(number*number)
    

    在 Python3 中:

    if __name__ == '__main__':
        n = int(input())
    for number in range(0, n):
        print(number*number)
    

    【讨论】:

      【解决方案6】:

      在 python 3 中:

      if __name__ == '__main__':
          n = int(input())
          for i in range(0,n):
              if i<n:
                  print(i*i)
      
      

      【讨论】:

        【解决方案7】:

        这应该可行:

        if __ name __ == ' __main __':
             n = int(input())
        
        for i in range(n):
            while i < 10:
                print(i ** 2)
                i += 1
                break
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-25
          • 1970-01-01
          • 2019-12-08
          • 2020-10-14
          • 2022-06-10
          • 2021-12-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多