用条件查找最小值 Python
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)