为什么两段看起来一样的代码一个通过一个Runtime error

Python在 openjudge上的习题

img

开始写的一段代码提交后一直显示runtime error,百思不得其解(由于开始那段删了所以不贴了)

后来我在CSDN上搜了一下,直接把搜到的答案提交后发现通过了,就开始对比我的和他的代码的区别
没有发现除了变量命名以外的任何区别
于是我干脆把变量命名改成了和答案一样的命名,再次提交,结果还是runtimeerror

img

以下是我再次提交后还有runtimeerror的代码

m,n=map(int, input().split())
food={}
for i in range(m):
    s=input().split()
    name,price,amount=s[0],int(s[1]),int(s[2])
    food[name] = [price,amount]
total=0
for i in range(n):
    names=input().split()
    for name in names:
        if food[name][1] > 0 :
            total += food[name][0]
            food[name][1] -= 1
print(total)

我觉得很离谱,就新建了一个python文件一模一样的从头到尾又重新手打了一遍,提交后通过了

img

这是这次提交的通过了的代码:

n,m = map(int,input().split())
food={}
for i in range(m):
    s= input().split()
    name, price,amount = s[0],int(s[1]),int(s[2])
    food[name] = [price,amount]
total=0
for i in range(n):
    names=input().split()
    for name in names :
        if food[name][1] > 0:
            total += food[name][0]
            food[name][1] -= 1
print(total)

我实在看不出来两个有什么区别麻烦dl帮忙看一下到底为什么不一样

第一行一个是n,m
一个是m,n
能一样吗

这种问题,数据的输入是固定的,第一个问题是你的m与n之间是反的