编译日志正常,但存在运行时错误!Python 编程挑战赛



在学习了很多关于Python的知识之后,我开始解决一些编程问题。我可以编写普通脚本,但是当涉及到编程问题时,我毁了。在尝试了一些问题并出现运行时错误后,我认为代码会有问题,但很快我启动了 Google,发现输入方式存在问题。我搜索并查看了一些关于堆栈溢出的问题,但这没有帮助。
现在考虑一个特定的问题,我正在尝试解决以下问题。

给你一个大小为 N 的数组 A,以及要处理的 Q 查询。对于每个查询,您都会得到一个整数 X,并且您应该找出数组 A 中是否存在 X。

输入: 第一行包含两个整数 N 和 Q,表示数组 A 的大小和查询数。第二行包含 N 个空格分隔的整数,表示元素 ai 的数组。接下来的 Q 行每行包含一个整数 X。

输出: 对于每个查询,如果 X 在数组中,则打印 YES,否则打印 NO。

示例输入
5 6
50 40 30 20 10
10
20
30
40
50
100

示例输出 是的
是的
是的
是的
是的

(这既不是我的家庭作业,也不是我得到奖励(

这是我尝试过的解决方案。

import sys  
p=[]
A=[]
file_name=sys.argv[1]
f= open(file_name)
user_args= f.read()
user_input=user_args.split()
N,n=int(user_input[0]), int(user_input[1])
for i in range(2,N+2):
    A.append(int(user_input[i]))
for i in range(N+2,n+N+2):
    p.append(int(user_input[i]))
for i in range(0,int(n)):
    linearsearch(A, p[i])
sys.exit()
#and then writing the linearsearch(A,p) for checkign the element.

我尝试并得到了编译日志,并出现运行时错误。如果我在我的机器上运行此代码,一切都很好,但是当我提交它时,会出现此运行时错误。

我也搜索了这个错误,但不知道为什么我会得到这个?

在这里,一些用户提出了解决方案。 我想要的是对我已经编写的代码的反馈,并且当我尝试通过命令行从文件中读取输入时。我哪里弄错了?我缺少一些基础知识吗?

你的问题是你应该从标准中读取,而不是从文件中读取 - 这将不起作用:

file_name=sys.argv[1]
f= open(file_name)

解决方案的骨架应该是这样的:

n, q = raw_input().split()
a = raw_input().split()
for query in sys.stdin:
    query.strip()
    if test_if_query_in(a):
        print "YES"
    else:
        print "NO"

祝你写test_if_query_in开心。这个解决方案在 Python 中非常简单,因为有一个带有 O(1( 搜索的内置集合类型。

您应该使用 raw_input 来读取数据。例如,我的解决方案是:

N,Q = map(int, raw_input().split(' '))
arr = map(int, raw_input().split(' '))
arr = set(arr)
for i in xrange(Q):
    N = int(raw_input())
    if N in arr:
        print("YES")
    else:
        print("NO")

最新更新