【问题标题】:Finding minimal value with condition python用条件python找到最小值
【发布时间】:2014-07-28 16:24:06
【问题描述】:
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 结尾.我试过这个,但条件不起作用。例如:它说 7 在 [9,8,7] 中最小。

【问题讨论】:

  • 你已经学过浮点数了吗?是否应该考虑这些?另请注意,min 为您提供最小的数字,而不是最小的 正数。

标签: python python-2.7 conditional-statements min


【解决方案1】:

编辑: 好的,我误读了您的代码,您使用的是我认为更好的剩余部分。虽然它可以使用像这样的简单划分来工作。

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

另外,如果您不使用 Python 3,您可能需要使用它来完成上述操作:

from __future__ import division

或者用float()转换成浮点数,但这太麻烦了。

【讨论】:

  • 从他发布的代码 sn-p 我认为可以安全地假设他没有使用 python 3.x ;-)
【解决方案2】:

您总是测试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)

【讨论】:

  • 也许可以准确地指出如何修复他的代码 - min(I,j) - 而不是 - min(a) - 但是是的,您的解决方案更好。
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 2021-04-05
  • 2021-01-14
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 2019-01-26
相关资源
最近更新 更多