python - Hackerrank“切棒”挑战在调试中正确但不输出
问题描述
我很难弄清楚我的代码在哪里失败。Hackerrank 有自己的样板测试,我还不习惯。Hackerrank 调试输出和我自己的 Ide 中的算法工作者,但在 Stdout 中返回“NoneNone”。我知道什么都不返回会创建无,但即使我执行“返回 '/n'.join(a_list) 它也不起作用。让我无法通过测试。我没有看到什么?https://www.hackerrank。 com/挑战/切入正题/问题
这不是重复的问题。否决票非常令人沮丧且无益的 nvm。
#!/bin/python3
import math
import os
import random
import re
import sys
def cutTheSticks(arr):
currentSize = len(arr)
while currentSize > 0:
least = min(arr)
print(currentSize)
for stick in range(len(arr)):
arr[stick] -= least
if arr[stick] <= 0:
arr[stick] = 0
for i in range(arr.count(0)):
arr.remove(0)
currentSize = len(arr)
return
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
n = int(input())
arr = list(map(int, input().rstrip().split()))
result = str(cutTheSticks(arr))
fptr.write(result)
fptr.write('\n'.join(map(str, result)))
fptr.write('\n')
fptr.close()
解决方案
您必须返回一个列表,其中包含在cutTheSticks
函数的每个操作之前存在的棒数。主要是,样板文件将列表中存在的元素连接成一个字符串(您不需要将返回值显式转换为 str)。
def cutTheSticks(arr):
currentSize = len(arr)
result = []
while currentSize > 0:
least = min(arr)
#print(currentSize)
result.append(currentSize)
for stick in range(len(arr)):
arr[stick] -= least
if arr[stick] <= 0:
arr[stick] = 0
for i in range(arr.count(0)):
arr.remove(0)
currentSize = len(arr)
return result
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
n = int(input())
arr = list(map(int, input().rstrip().split()))
result = cutTheSticks(arr)
fptr.write('\n'.join(map(str, result)))
fptr.write('\n')
fptr.close()
推荐阅读
- php - PHP Regex - 获取字符串中的订单 ID(8 位长,以 0 开头)
- python - 熊猫根据列中的相同字符串删除行
- php - 将php数组值插入数据库
- python - python Regex匹配直到单词如果找到单词否则匹配完整字符串并且匹配组将大于0
- c - 如何安装 C 源文件和头文件?
- python - 在 Python 3 中使用 RISparser 时出现 readris() 的问题
- python - 将比较运算符与其他条件相结合
- r - 您如何将 gtsummary 中比例的置信区间与 by 包括在内?
- node.js - 将音频文件转换为线性 PCM 16 位
- python - cv2 图像大小从 PIL Image 转置