【问题标题】:Python: Assigning Random Integer to Variables in a ClassPython:将随机整数分配给类中的变量
【发布时间】:2016-01-10 00:04:43
【问题描述】:

我在这样的类中有大量变量:

class Variables:
  num1 = "Text 1"

  num2 = "Text 2"

  num3 = "Text 3"

等等等等。我需要为每个变量分配一个范围(1,30)中的特定数字,以便在类中,每个变量都由不同的整数值表示。任何帮助将不胜感激。谢谢!

【问题讨论】:

  • Python 不使用var 声明!
  • 你这样做是为了达到什么目的?
  • 在程序的后面,我希望能够获取用户输入以调用变量。它主要用于我基于随机函数和用户输入构建的游戏。
  • @Arthur:我认为你最好使用字典或列表而不是大量变量!

标签: python random integer


【解决方案1】:

您的类中有很多看起来像“名称”的数据(此时您使用变量 num1、num2 等作为名称)并且每个“名称”都映射到一个“值”(在当您的值看起来像“文本 1”、“文本 2”等时。

您可能会发现对这些数据使用字典更容易,而不是尝试将每个 name:value 定义为单独的 variable = value。

例如,你最终会得到类似的东西:

class Variables(object):
    numbers = {
        "num1": "Text 1",
        "num2": "Text 2",
        "num3": "Text 3",
    }

现在以程序方式生成(一种自动生成的奇特方式)字典变得更加简单:

class Variables(object):
    numbers = {
        "num{}".format(i): "Text {}".format(i)
        for i in range(100)
    }

现在,如果您希望它们是随机数:

import random

class Variables(object):
    numbers = {
        "num{}".format(i): "Text {}".format(random.randrange(100))
        for i in range(100)
    }

v = Variables()
print v.numbers["num50"]

【讨论】:

  • 非常感谢您的反馈。我在 Python IDLE 中运行了代码,并对其进行了一些调整以适合我的参数,并且效果很好。谢谢!
【解决方案2】:

你的意思是这样的?

class Variables():
    def __init__(self):
        for i in range(1, 31):
            setattr(self, 'num{}'.format(i), 'Text {}'.format(i))

v = Variables()

print v.num1 # Text 1
print v.num30 # Text 30

【讨论】:

  • 我认为他的意思是随机整数
  • 是的,随机整数。感谢您的帮助
  • @Arman - OP 说 为每个变量分配一个范围 (1,30) 中的特定数字。将其转换为随机数应该不会花太多时间,但您不会知道类上定义了哪些字段。
  • @cricket_007 有问题的标题他说在这个范围之间分配随机整数
【解决方案3】:

首先创建变量并将它们添加到字典中:

dic = {num1:"Text 1", num2 : "text2",..}

接下来创建一个变量对象:

  a = Variables()   

然后调用set_dic类方法:

  a.set_dic(dic)

它为每个变量分配一个1,30之间的随机整数

from random import randint  
class Variables:
      def __init__(self):
            self.dic = {}
      def set_dic(self, dic):
            self.dic =  dic
            for x in dic:
                  dic[x] = randint(1,30)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2023-04-08
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多