【问题标题】:What is the "english translation" of "if not randint(0,5):"?“if not randint(0,5):”的“英文翻译”是什么?
【发布时间】:2016-11-06 17:56:15
【问题描述】:
import random

dirty = True
scrub_count = 0


while(dirty):
    scrub_count += 1
    print('scrub the pan {}'.format(scrub_count))

    if not random.randint(0,5):
        print('all clean')
        dirty = False
    else:
        print('NOPE STILL SOME WORK TO DO')

我完全不明白if not random.randinit(0,5) 是如何翻译的,或者那行代码如何呈现scrub_count 满足随机数。

对我来说,合理的说法是......如果scrub_count等于随机数,那么print('all clean')

【问题讨论】:

  • 任何不等于 0 的都被认为是 True。因此,randomint 调用将在 4 次中有 3 次为真。 (老实说我不明白你的问题,但这可能会有所帮助)
  • @Olian04 5 合 6...
  • @AnttiHaapala 建议在 5 次中输入 4 次。但是6个中有5个? randomint 是否包含在内?
  • @Olian04 是的;还有random.randrange

标签: python if-statement random


【解决方案1】:

只要random.randint(0, 5) 的返回值为0not random.randint(0, 5) 就会评估为真(真实)。

空虚的真实

依靠真实性来检查是否为空是 Python 中的一个常见习语(PEP8 建议):

对于序列,(字符串,列表,元组),使用空的事实 序列是错误的。

是:如果不是 seq: 如果序列:

否:如果 len(seq): 如果不是 len(seq):

零的真实性

我发现在检查数字的真实性时使用真实性来检查空虚很有用。但是依靠数字的真实性是另一回事。

我同意这种写东西的方式有点复杂。就个人而言,我更愿意看到random.randint(0, 5) == 0

【讨论】:

  • 我更喜欢if random.random() <= 1/6:,这可能更容易理解为“概率为六分之一”...
  • 实际上,当random.randint(0, 5)等于零时,not random.randint(0, 5) 的计算结果为 True
  • 已修复。不错的收获@SiHa。谢谢!我想这更能证明我个人发现 not 的数字不直观......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多