用条件查找最小值 Python

4 投票
2 回答
10733 浏览
提问于 2025-04-18 08:58
a = []
for i in range(3):
    a.append(input())
j = 0
for i in a:
   if i % 10 != 7:
       j = min(a)
print j

我需要一个算法,能够在一个列表中找到最小的正数,而且这个正数的十进制表示不能以数字7结尾。可以保证这个列表里至少有一个正数,它的十进制表示不会以7结尾。我尝试过这样做,但条件不对。比如说:它告诉我在[9,8,7]这个列表中,7是最小的。

2 个回答

0

编辑:
哦,我之前看错了你的代码,你用的是取余,我觉得这样更好。虽然其实只用普通的除法也能做到,像这样。

if ((i / 10) - int(i / 10)) * 10 != 7:

另外,如果你不是在用Python 3,可能需要用这个才能让上面的代码正常工作:

from __future__ import division

或者可以用float()把数字转换成浮点数,但这样会让代码看起来太复杂了。

5

你总是要在a这个列表里找最小的数字,虽然你会检查的次数和a里未过滤的数字数量是一样的。其实,最好一开始就不要把以7结尾的数字放进a里;你可能还想过滤掉负数,只保留正数:

a = []
for i in range(3):
    value = input()
    if i % 10 != 7 and i >= 0:
        a.append(value)

print min(a)

另外,你也可以在生成器表达式中过滤掉不需要的值:

a = []
for i in range(3):
    a.append(input())

print min(i for i in a if i % 10 != 7 and i >= 0)

撰写回答