fileinput.input()是如何工作的?

2024-06-22 23:41:05 发布

您现在位置:Python中文网/ 问答频道 /正文

上载包含数字(5,5,10,10)的1.txt时,会引发一个错误:ValueError:invalid literal for int()with base 10:'5,5,10,10'

我文件的确切内容是:5,5,10,10

我做错什么了

代码的下半部分用于hackathon上传数据。在…之后

谢谢

旧版本:

import fileinput

def processLine(inputLine):
.....
return y

for line in fileinput.input("1.txt"):
    inputLine = int(line)
    print(processLine(inputLine))

新版本:

for line in fileinput.input():
    inputLine = line.rstrip("\n")
    inputLine = inputLine.rstrip("")
    inputLine = inputLine.split(' ')
    inputLine = list(map(int,inputLine))
    print(processLine(inputLine))

现在它适用于我的数据:5 5 10 10 但当我在hackathon中编写代码时,仍然会遇到一个错误: 数据集编号:0 回溯(最近一次呼叫): 文件“./prog.py”,第20行,in ValueError:基数为10的int()的文本无效:“”

我怎么知道该纠正什么

输入 唯一的输入行由4个空格分隔的整数组成:x1、y1、x2、y2。 测试的50%cases:1 <= x1、y1、x2、y2<;=10^3 在其他50%的测试用例中:1<;=x1、y1、x2、y2<;=10^9. 输出 描述的矩形内的蜂巢数

示例 输入 1 1 15 4 输出 0个

输入 5 5 10 10 输出 12个


Tags: 数据inlttxtfor错误lineint
1条回答
网友
1楼 · 发布于 2024-06-22 23:41:05

在您的示例中,line是字符串'5,5,10,10'(因此问题实际上不是关于fileinput,而只是一个转换):

line = '5,5,10,10'
int(line)
# ValueError: invalid literal for int() with base 10: '5,5,10,10'

因此,您缺少拆分和映射:

list_of_input = line.split(',')
list_of_int = map(int, list_of_input)           # python2
list_of_int = list( map(int, list_of_input) )   # python3
# is now [5, 5, 10, 10]

相关问题 更多 >