繁体   English   中英

在文本文件中找到最小的数字(python)

[英]find the smallest number in a text file (python)

所以我有一个大约有 400 行的文本文件,每一行都有一个数字,我需要找到这些数字中最小的一个。

我目前有

def smallestnumber(fread, fwrite):
number = {int(line) for line in fread}
smallest = min(number)
print ("smallest number is", smallest)

但由于某种原因它不起作用。 在 .txt 文件中获得最小数字的最佳方法是什么? (fread 是我在 main() 函数中打开的 .txt 文件!一旦我设法弄清楚了,我会将数字写入 fwrite,哈哈)

编辑:我在最小的 = min(number) 部分收到一个错误 (ValueError),说“min() arg 是一个空序列”。

EDIT2:我之前使用 test.txt 文件来测试代码,它只是

1000 700 450 200 100 10 1 每个在不同的行上 所以格式/类型与我应该使用的文件相同

fread(我得到数字的地方)和 fwrite(我想保存数字的地方)在 main() 中定义如下

name= input("Give the name of the file which to take data from: ")
fread = open(name, "r") #File which is being read
name2= input("Give the name of the file where to save to: ")
fwrite = open(name2, "w") #File which is being typed to

我很抱歉这个问题可能有错误的“格式化”等,我是 python 和 StackOverflow 的新手!

谢谢您的帮助!

def smallestnumber(fread, fwrite):
    # store the numbers in a list
    numbers = [int(line) for line in fread]
    # sort the list so that the smallest number is the first element of the list
    numbers.sort()
    # print the first element of the list which contains the smallest number 
    print ("smallest number is: {0}".format(numbers[0])

我没有运行代码,但它应该可以工作。 如果您有更多的错误检查,那将是最好的。 例如,如果line不是数字, int(line)可能会引发异常。

您的代码不起作用,因为列表推导式应该使用方括号而不是大括号。

它应该是[int(line) for line in fread]而不是{int(line) for line in fread}

一旦你有一个列表,函数min也将起作用。

max=-9999
for line in open('lines.txt').readlines():
  #print(line)
  for word in line.split():
    #print(word,word.isnumeric())
    if word.isnumeric() and int(word)>max:
      max=int(word)
print(max)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM