简单 Python 3 if 语句中的 HackerRank 运行时错误
HackerRank Runtime Error in Simple Python 3 if statement
def findNumber(arr, k):
if k in arr:
print( "YES" )
else:
print( "NO" )
if __name__ == '__main__':
arr_count = int(input().strip())
arr = []
for _ in range(arr_count):
arr_item = int(input().strip())
arr.append(arr_item)
k = int(input().strip())
result = findNumber(arr, k)
fptr.write(result + '\n')
fptr.close()
虽然这在 Pycharm 上运行得很好,但在 HackerRank 上我收到错误:
Traceback (most recent call last):
File "Solution.py", line 42, in <module>
fptr.write(result + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
如果您能指出可能是什么错误,我们将不胜感激。
你的函数 def findNumber(arr, k):
没有 return 任何东西,所以它 return 隐含地 None
。
这些行
result = findNumber(arr, k)
fptr.write(result + '\n')
然后尝试将 None
和一个字符串相加 - 但行不通。
而不是在函数内部打印,return "Yes"
或 "No
"。
findNumber returns 没有,所以它自动 returns None。您必须将函数中的 "print" 替换为 return 语句。
def findNumber(arr, k):
if k in arr:
print( "YES" )
else:
print( "NO" )
if __name__ == '__main__':
arr_count = int(input().strip())
arr = []
for _ in range(arr_count):
arr_item = int(input().strip())
arr.append(arr_item)
k = int(input().strip())
result = findNumber(arr, k)
fptr.write(result + '\n')
fptr.close()
虽然这在 Pycharm 上运行得很好,但在 HackerRank 上我收到错误:
Traceback (most recent call last):
File "Solution.py", line 42, in <module>
fptr.write(result + '\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
如果您能指出可能是什么错误,我们将不胜感激。
你的函数 def findNumber(arr, k):
没有 return 任何东西,所以它 return 隐含地 None
。
这些行
result = findNumber(arr, k) fptr.write(result + '\n')
然后尝试将 None
和一个字符串相加 - 但行不通。
而不是在函数内部打印,return "Yes"
或 "No
"。
findNumber returns 没有,所以它自动 returns None。您必须将函数中的 "print" 替换为 return 语句。