【问题标题】:Python random.choice same outputPython random.choice 相同的输出
【发布时间】:2019-03-24 02:12:04
【问题描述】:

我正在尝试随机化变量中的一些字符串,

myTest = random.choice(["test1","test2","test3"])
print(myTest)
print(myTets)
print(myTest)

当我运行我的脚本时,它们每次都是一样的,

test1
test1
test1

我喜欢在每次调用时随机化我的变量,比如,

test1
test3
test2

【问题讨论】:

  • myTets 希望是错字?此外,random.choice 不是可变参数,它只需要一个参数(应该是一个列表):random.choice(["test1","test2","test3"])
  • 为此,每次需要随机字符串时都必须调用 random。
  • 你重复打印一个变量的值而不改变它。

标签: python python-3.x random


【解决方案1】:

每次都要调用命令:

myTest = random.choice(["test1","test2","test3"])
print(myTest)
myTest = random.choice(["test1","test2","test3"])
print(myTest)
myTest = random.choice(["test1","test2","test3"])
print(myTest)

【讨论】:

    【解决方案2】:

    试试这个...

    print(random.choice("test1","test2","test3"))
    print(random.choice("test1","test2","test3"))
    print(random.choice("test1","test2","test3"))
    

    【讨论】:

      【解决方案3】:

      请访问random.sample docs。在您的情况下,可能如下所示:

      import random
      my_tests = ['test1','test2','test3']
      for choice in random.sample(my_tests, 3):
          print(choice)
      

      其他选项是就地执行此操作,换句话说 - 通过更改 my_tests:

      import random
      my_tests = ['test1','test2','test3']
      print(my_tests, '\n\n')
      for i in range(10):
          random.shuffle(my_tests)
          print(my_tests)
      

      【讨论】:

      • 不过,这不会重复一个值,因此它与在循环中调用 choice 不同。当然,OP 可能真的想要那个。如果他们这样做了,另一个选择是在列表中调用shuffle,如果您不介意改组原始列表。
      【解决方案4】:

      这个基本一样

      x = 42
      print(x)
      print(x)
      print(x)
      

      变量值只有在你赋值时才会改变:

      x = 42
      print(x)
      x = 45
      print(x)
      

      如果你想要一个新的随机值,你需要再次调用该函数:

      l = [1, 2, 3, 4, 5]
      x = random.choice(l)
      print(x)
      x = random.choice(l)
      print(x)
      

      【讨论】:

      • 让我澄清一下,我有一个 var.py,因为我正在保存我的变量,并且在另一个 python 文件中我试图读取 var.myTest
      • @ArmanTrb 我不明白这与你的问题有什么关系。
      • @ArmanTrb 如果您不能直接根据您的问题调整我的答案,您应该编辑您的问题以显示一个更复杂的示例来说明您所做的事情并更详细地解释您正在尝试做什么。
      • @ArmanTrb 如果你想改变var.myTest 的值,你必须给它分配不同的值。如果你只分配一次,那么它永远不会改变。在var.py 中包含全局变量似乎是您实际问题的不正确解决方案。我建议您了解函数以及如何将参数传递给它们。
      • @ArmanTrb 如果你有一千个这样的变量也没关系。你用这些变量做什么也没关系。每次你想选择一个随机元素时,你都必须调用random.choice。没有办法解决这个问题。但是,您可以编写像 def random_greeting(): return random.choice(['Hi', 'Greetings', 'Welcome']) 这样的函数,然后在需要随机问候时简单地调用该函数:print(random_greeting())
      【解决方案5】:

      首先你必须导入你的随机变量。然后你应该把你的 test1、test2 和 test3 放在一个字符串中。然后你可以得到你正在寻找的结果是这样的:

      import random
      myTest = random.choice(["test1, test2, test3"])
      print(myTest)
      

      【讨论】:

        【解决方案6】:

        如果你想将结果存储在某处而不是仅仅打印,你应该只使用list comprehension,值将直接存储在一个新列表中。

        翻译:

        >>> import random
        >>>
        >>> choices = ["test1","test2","test3"]
        >>> selected = [random.choice(choices) for _ in range(3)] # iterates 3 times, appending value of "random.choice(choices)" to the end of the list
        >>> print(selected)
        ['test1', 'test2', 'test2']
        

        顺便说一句,“_”只是“我不在乎”变量,用于存储您不需要的值,如果您需要数字,您可以将其命名为适当的变量,如“i”并使用它。

        编辑:同样在您的问题得到回答后,请选择帮助您解决问题的答案。谢谢。

        【讨论】:

          猜你喜欢
          • 2019-09-19
          • 2021-11-14
          • 1970-01-01
          • 1970-01-01
          • 2016-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多