如何在 .txt 文件中找到最小的浮点数?

How find the smallest floating point number in a .txt file?

提问人:RykerStrike 提问时间:11/4/2023 最后编辑:RykerStrike 更新时间:11/9/2023 访问量:84

问:

问题来了:

假设您有一个文本文件,其中包含浮点数列表,每行一个数字。编写 Python 程序,该程序将搜索文件并找到最小的数字并将其打印到控制台。

我们不能使用 、 、 、 或 这样的函数。.readlines()withtryinfNone

这就是我所拥有的,我被困住了。

in_file = open("floating-point.txt", "r")


def get_smallest_float():
    count = 0
    for line in in_file:
        num = float(line)
        if count == 0:
            if num > 0:
                smallest = num
                count = count + 1
        elif count == 1:
            if num < smallest:
                num = smallest
                count = count + 1
    in_file.close()
    return smallest

get_smallest = get_smallest_float(in_file)
print(get_smallest)
文件 浮点 python-3.11

评论

1赞 John Gordon 11/4/2023
如果不是 0 或 1,则函数停止执行任何操作...count
0赞 John Gordon 11/4/2023
另外,你为什么要比较?负数是一回事。num > 0
0赞 paxdiablo 11/4/2023
您的问题似乎遗漏了一个实际问题。你说你被卡住了,但实际上并没有说明你当前代码的问题是什么。这是一件很重要的事情,你不觉得吗?:-)
0赞 RykerStrike 11/4/2023
我无法让我的程序找到in_file中最小的浮点。而且我不能使用任何我在课堂上没有学过的东西。
0赞 def_init_ 11/4/2023
我注意到的第一件事是您的函数不接受任何参数,但随后您尝试传递函数“in_file”。

答:

0赞 Richard Barber 11/4/2023 #1

有一些逻辑和语法错误,但这似乎有效。 我删除了阳性数字测试。问题说的是最小数,而不是最小的绝对值。新最低限度的分配也被撤销。此解决方案不处理平局的情况。

in_file = open("floating-point.txt", "r")


def get_smallest_float():
    count = 0
    for line in in_file:
        num = float(line)
        if count == 0:
                smallest = num
                count = count + 1
        elif count > 0:
            if num < smallest:
                smallest = num
                count = count + 1
    in_file.close()
    return smallest

get_smallest = get_smallest_float()
print(get_smallest)

和差异:

diff -u before after
--- before  2023-11-03 22:23:58
+++ after   2023-11-03 22:23:19
@@ -6,15 +6,15 @@
     for line in in_file:
         num = float(line)
         if count == 0:
-            if num > 0:
                 smallest = num
                 count = count + 1
-        elif count == 1:
+        elif count > 0:
             if num < smallest:
-                num = smallest
+                smallest = num
                 count = count + 1
     in_file.close()
     return smallest
 
-get_smallest = get_smallest_float(in_file)
+get_smallest = get_smallest_float()
 print(get_smallest)

给定此浮点 .txt:

1.0
1.1
1.2
0.9
-.01
.01

其结果是 :-0.01

给定浮点 .txt 与这些:

1.0
1.1
1.2
0.9
-.01
.01
-.02
-.001

其结果是 :-0.02

0赞 Codist 11/4/2023 #2

这些限制很奇怪。但是,考虑到这些限制,它就很简单:

for i, fv in enumerate(map(float, open("floating-point.txt"))):
    lo = min(lo, fv) if i else fv #type: ignore

print(lo) #type: ignore
0赞 chux - Reinstate Monica #3

我期待更像这样的东西:

for line in in_file:
    num = float(line)
    if (count == 0) or (num < smallest)
        smallest = num
        count = count + 1