【问题标题】:Selecting randint from range从范围中选择 randint
【发布时间】:2015-07-30 05:23:42
【问题描述】:
from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in number_of_trials:
    print randint(range(range_of_random_numbers))

我是 python 的初学者。当我尝试运行上面的代码时,我得到了错误:

TypeError: 'int' 对象不可迭代

我试图从一个范围(在 range_of_numbers 中定义)中获取一个随机数来打印一定次数(在 number_of_trials 中定义)。请帮忙,我做错了什么?

【问题讨论】:

    标签: python


    【解决方案1】:

    使用range 创建一个可迭代的(如果您使用的是 Python 2.x,则为列表),它将用于迭代。

    并且您需要将两个整数传递给random.randint,而不是可交互的(或列表):

    from random import randint
    
    number_of_trials = 100
    range_of_random_numbers = 1000
    for each in range(number_of_trials):
        print randint(0, range_of_random_numbers)
    

    【讨论】:

    • 做到了!谢谢。我知道我遗漏了一些东西,但我更多地关注 for 循环内部的内容,而不是定义它的内容。
    【解决方案2】:

    我认为你要使用的是选择。

    from random import choice
    

    然后改变

    print randint(range(range_of_random_numbers))
    

    print choice(range(range_of_random_numbers))
    

    选择函数将从非空序列中随机选择一个元素。

    【讨论】:

      【解决方案3】:

      代码中的一个问题和一个建议 -

      1. 你正在做 - for each in number_of_trails: - 这是错误的,你正在尝试迭代一个整数,你应该这样做 - for each in range(number_of_trails):

      2. 这里最好使用random.choice()(而不是randint())。特别是如果range_of_random_numbers 不连续。

      例子-

      from random import choice
      number_of_trials = 100
      range_of_random_numbers = 1000
      for each in range(number_of_trials):
          print choice(range(range_of_random_numbers))
      

      来自documentation of random.choice()-

      从非空序列seq中返回一个随机元素。

      【讨论】:

        【解决方案4】:

        应该是这样的

        from random import randint
        number_of_trials = 100
        range_of_random_numbers = 1000
        for each in range(number_of_trials):
            print randint(range(range_of_random_numbers))
        

        您收到错误是因为 int 对象不可迭代,即:

        即)

        for a in 1:
            print a
        
        Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        TypeError: 'int' object is not iterable
        

        【讨论】:

          猜你喜欢
          • 2011-12-21
          • 2013-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多