【问题标题】:Is there a way of saying "if anything == anything"? (Python)有没有办法说“如果有什么==什么”? (Python)
【发布时间】:2019-11-26 08:53:57
【问题描述】:

示例代码:

import random

x = random.randint(1, 101)
y = random.randint(1, 101)
z = random.randint(1, 101)

print(x, y, z)

现在有没有更简单的说法

while x == y or x == z or y == z:
    x = random.randint(1, 101)
    y = random.randint(1, 101)
    z = random.randint(1, 101)

因为你拥有的变量越多,while 语句的运行时间就越长,如果你忘记了什么,它就会变得越丑陋和令人沮丧。

类似:如果任何变量等于任何其他变量:重新滚动。

谢谢!

【问题讨论】:

  • while len({x,y,z}) < 3
  • 如果你开始使用许多包含随机值的变量,你应该考虑一个列表(然后你可以使用if len(set(myvars)) < len(myvars):。但在这种情况下,你应该考虑使用 NumPy 的随机模块和其中的函数。

标签: python random while-loop


【解决方案1】:

如果你有三个变量,你可以检查是否有一个等于另一个使用

len({x,y,z}) < 3

如果列表values 中有任意数量的变量,则可以使用以下命令检查是否有重复值:

len(set(values)) < len(values)

【讨论】:

    【解决方案2】:

    在这种特殊情况下,您实际上需要的是random.sample()

    x, y, z = random.sample(range(1, 101), 3)
    

    这样您将始终获得独特的价值,而无需重新滚动。

    【讨论】:

    • 谢谢!尽管这不是我的问题,但我会在我的代码中使用它,因为它让事情变得更容易!
    【解决方案3】:

    您可以创建一个set 来获取唯一值并检查集合的长度是否小于输入元素的数量。

    例如

    while len({x, y, z}) < 3:
        x = ...
        y = ...
        z = ...
    

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 2019-03-08
      • 1970-01-01
      • 2021-04-23
      • 2015-08-11
      • 2011-11-09
      相关资源
      最近更新 更多