在学习了很多关于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")