为什么我的硬币密码不起作用?

2024-05-16 06:39:40 发布

您现在位置:Python中文网/ 问答频道 /正文

def coin():
    print random.randint(0,1)
    if (coin() == 0):
        return Heads
    else:
        return Tails

coin_flip()

我总是犯一系列错误。如果我只是在第二行结束代码,那么它正确地返回0或1。所以我想如果我做了if/else代码,它应该返回专有名称。但无济于事。我也尝试用这种风格的代码来做,而不仅仅是做任何投币代码。谢谢


Tags: 代码returnif风格def错误randomelse
3条回答

你的代码中有无限的递归。如果你追踪整个执行过程,你会得到:

call coin()
print
call coin()
print
call coin()
....
out of memory at some point

您可能希望存储随机.randint(0,1)在一个变量中,比如val。 然后在if条件下使用val。你知道吗

if (val == 0):
    return Heads
else:
    return Tails

目前你的代码是无限递归的。你知道吗

我猜一下,但我想你要做的是定义coin_flip,而不是coin。如果我理解正确,以下是你应该写的:

def coin_flip():
    coin = random.randint(0,1)
    if coin == 0:
        return 'heads'
    else:
        return 'tails'

然后您可以稍后使用coin_flip()调用它。你知道吗

函数中发生的事情是,您将01的值赋给名称coin。如果该值为0,则返回字符串“heads”。否则返回字符串“tails”。你知道吗

相关问题 更多 >