应该找到代码。但是我得到了错误:
ValueError。有人可以帮我解决问题吗?谢谢。
integers.close() # closes the file
# print results
print (smallest, biggest)
答案 0 :(得分:1)
问题是读取文件或文件的每一行都提供一个String类型的行,您的程序无法以正确的方式处理输入。 如果您希望代码工作,则应该执行以下操作:
integers = open('/home/user/Documents/number.txt', 'r')
biggest = float('-inf')
smallest = float('inf')
for line in integers:
for number in line.split(' '): # Splitting the line counting on spacing between numbers
curr = int(number) # Casting each string to an integer type
if biggest < curr:
biggest = curr
if smallest > curr:
smallest = curr
integers.close() # closes the file
# print results
print(smallest, biggest)
如果您想使用Python读/写文件,建议使用文件处理程序,您可以进一步阅读here。
在这里的示例中,我已经:
代码:
with open('number.txt', 'r') as txtfile:
numbers_list = txtfile.readlines()
numbers = [int(num) for curr_line in numbers_list for num in curr_line.split(' ')]
print(min(numbers), max(numbers))
答案 1 :(得分:0)
您的问题,是由对文件读取内容的错误处理引起的。
要从行尾丢弃换行符(\n
),可以使用.rstrip('\n')
方法,例如:
x = '1 2 3\n'
y = x.rstrip('\n')
print(y)
将打印:
1 2 3
(无换行符)
或者,您可以使用.splitlines()
方法,如下所示:
file = open('numbers.txt','r')
data = file.read().splitlines()
file.close()
在这种情况下,data
是list
中的str
,每个代表文件的一行。您将需要使用.split(' ')
方法来获取特定数字,并需要使用int
从str
转换为int
,例如:
a = '1 2 3'
b = [int(i) for i in a.split(' ')]
print(b) #prints [1, 2, 3]
在正确的list
个int
之后,您可以实现自己的 min 或 max 查找。