编程新手,为了练习,我正在尝试编写 I-Ching oracle。 我得到了我想要的输出,但只是将此代码块复制到我的程序中 6 次。
我可以设置一个循环条件来使它更简洁吗?
我已经阅读了有关循环的文档和教程,但还没有看到如何在这种情况下应用它。
import random
oracle = random.randint(6,9)
if oracle == 6:
print "__ __~"
elif oracle == 7:
print "_____"
elif oracle == 8:
print "__ __"
elif oracle == 9:
print "_____~" (X6)
=> 这是我得到的输出:
_____
__ __
__ __~
_____
_____~
__ __
请您参考如下方法:
请注意,您的概率分布是错误的。
要阅读易经,您应该掷 3 个均匀的硬币,每条反面加 2 分,每条正面加 3 分:
Coin1 Coin2 Coin3 Points
t t t 6
t t h 7
t h t 7
t h h 8
h t t 7
h t h 8
h h t 8
h h h 9
您可以看到有 3 种方法求和为 7 或 8,但只有一种方法求和为 6 或 9;因此分配应该是 6: 12.5%, 7: 37.5%, 8: 37.5%, 9: 12.5%。 randint 给出一个均匀分布,即每个 25%。
我建议如下:
from random import randint
xyin = "__ __~"
yang = "_____"
yin = "__ __"
xyang = "_____~"
three_coins = [ xyin, yang, yang, yin, yang, yin, yin, xyang ]
def cast():
return three_coins[randint(0, 7)]
def hexagram():
return '\n'.join(cast() for i in range(6))
print hexagram()
