根据“是”或“否”响应重复进行的硬币翻转程序

时间:2018-12-05 03:56:43

标签: python python-3.x

我是python的新手,想创建一个基本的硬币翻转程序,该程序将根据用户输入重复执行。 我能够为硬币翻转创建随机响应,但是当它询问是否要重复时,它不会生成新的随机响应,而是重复相同的响应。如果我输入“ y”,如何使它重新启动程序。

import random
coin = random.randint(0,1)
y = "y"
n = "n"

import sys
def coin_flip():
    if coin == 0:
        print("Heads")
    elif coin == 1:
        print("tails")
    again = input("flip again?('y' or 'n') ")
    if again == y:
        coin_flip()

    else:
        again == n
        print("good bye")
        sys.exit()
coin_flip()

3 个答案:

答案 0 :(得分:0)

您应该在coin_flip函数中生成随机值。您只能在脚本开始时创建它,因此只能创建一次。

将行coin = random.randint(0,1)移动到coin_flip函数的开头。

答案 1 :(得分:0)

您的程序将始终为您提供相同的结果,因为您正在将coin函数之外的值coin_flip()变量随机化。因此,在程序开始时它只能被随机化一次。

要解决此问题,只需在coin函数开始时将coin_flip()变量值随机化

def coin_flip():
    coin = random.randint(0,1)
    # the rest of the function

答案 2 :(得分:0)

如果您在random module中进行深入研究,您会发现一些有趣的实用程序,这些实用程序将使这些事情变得非常简短。例如

random.choice(['Heads', 'Tails']

会带给您随机的正面或反面,而没有所有额外的if/elif逻辑。这些事情将使您的代码更易于阅读,理解和维护。例如,您可以执行以下操作:

import random

while (input("flip again?('y' or 'n') ") == 'y'):
    print(random.choice(['Heads', 'Tails']))
print("good bye")