【问题标题】:Python - len(x) doesn't evaluate in parameters?Python - len(x) 不在参数中评估?
【发布时间】:2016-04-17 20:12:35
【问题描述】:

我正在编写一个游戏,如果用户提供一个单词,游戏就会使用该单词。否则,程序应该从字典中随机选择一个单词。字典是一个全局列表。目前,默认随机数将始终评估为 0,但在其他任何地方都正确评估。

代码:

 def game(i = random.randint(0, len(dictionary))):
    print 'default random:', i
    print 'random inside function:', random.randint(0, len(dictionary))

输出:

default random: 0
random inside function: 40403

Python 不能评估 len 内部参数吗?

【问题讨论】:

标签: python random parameters zero variable-length


【解决方案1】:

如果您对随机数生成器说“从 0 到 100 中选择一个数字”并且它选择 0 并不意味着随机数库已损坏。 Python 评估了函数签名中的语句。

上面代码中的所有内容都按照您的预期工作。 http://dilbert.com/strip/2001-10-25

【讨论】:

  • 您是否在发布代码之前设置了随机种子(这样可以确保人们可以一次又一次地生成相同的序列)?还是开始时您的字典长度为0? (我猜是后者)(做一个 len(dictionary) 的第二个变量来证明它)
  • 我不确定代码前的随机种子是什么意思。这是它被称为的第一个地方。字典长度不是 0,如果您查看方法的主体,我会发现包括 len(dictionary) 在内的代码行在方法内工作正常,只是在参数中没有
  • 有2个时间点。一个是函数定义的时候,一个是函数运行的时候。
猜你喜欢
  • 2015-12-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
相关资源
最近更新 更多