我不知道如何从掷硬币游戏中的循环中获取总数



![掷硬币程序][1]

标题

我必须制作这个翻硬币程序,它输出翻转次数和正面或反面的数量。用户有机会随心所欲地玩,直到他们退出程序。我应该得到这个人翻转并得到正面或反面的总次数。例如,如果一个人玩 3 次,第一次翻转 10 次,第二次翻转 15 次,第三次翻转 20 次,那么翻转的总数将是 45 次翻转。我无法让程序计算翻转、正面或反面的总数。同样,在人第一次玩之后,如果他们选择再次玩,他们无法输入低于之前数量的翻转次数。我不知道出了什么问题。

#coin toss
print "Welcome to my coin tossing game. I will flip a coin the amount"
print "of times you tell me to and show you your results."
import random
counter = 0
start = 0
user_input = 0
heads = 0
tails = 0
user_input = int(raw_input("Enter the number of times you want to flip the coin "))
while user_input > counter:
        chance = random.randrange(2)
        counter = counter + 1
        if chance == 1:
            heads = heads + 1
        else:
            tails = tails + 1
print "You flipped the coin", counter, "times."
print heads, "times came out heads"
print tails, "times came out tails"
headstotal = heads
tailstotal = tails
restart = raw_input("Would you like to try again? y or n ")
while restart == "y":
        user_input = int(raw_input("Enter the number of times you want to flip the coin"))
        while user_input > counter:
                chance = random.randrange(2)
                counter = counter + 1
                if chance == 1:
                        heads = heads + 1
                else:
                       tails = tails + 1
        print "You flipped the coin", counter, "times."
        print heads, "times came out heads."
        print tails, "times came out tails."
        restart = raw_input("Would you like to try again? y or n ")
        print "Thanks for playing."

您需要在两次运行之间将计数器设置为 0

考虑重组代码以避免大量重复

while True:
    counter = 0
    user_input ...
        ...
    ...
    restart = raw_input("Would you like to try again? y or n ")
    if restart == "n":
        break
print "Thanks for playing."

您还可以使用标准集合。柜台等级:( http://docs.python.org/dev/library/collections#collections.Counter )

c = Counter()
c.update(["head"])

这是一个使用常见python习语的版本

#coin toss
print "Welcome to my coin tossing game. I will flip a coin the amount"
print "of times you tell me to and show you your results."
import random, collections
while True:
    counter = collections.Counter()    
    user_input = int(raw_input("Enter the number of times you want to flip the coin "))
    counter.update(random.choice("head", "tail") for i in range(user_input))
    print "You flipped the coin", user_input, "times."
    print counter["head"], "times came out heads"
    print counter["tail"], "times came out tails"
    restart = raw_input("Would you like to try again? y or n ")
    if restart != "y":
        break
print "Thanks for playing."

您的代码,重构。

#coin toss
print "ttWelcome to my coin tossing game. I will flip a coin the amount"
print "ttof times you tell me to and show you your results.n"
import random
heads = 0
tails = 0
headstotal = 0
tailstotal = 0
while True:
    counter = user_input = int(raw_input("Enter the number of times you want to flip the coin "))
    while user_input > 0:
        chance = random.randrange(2)
        if chance==1:
            heads+=1
            headstotal+=1
        else:
            tails+=1
            tailstotal+=1
        user_input-=1
    print "You flipped the coin", counter, "times."
    print heads, "times came out heads"
    print tails, "times came out tails"
    heads=tails=0
    restart = raw_input("Would you like to try again? y or n")
    if restart=="n":
        break
print "total heads = ",headstotal
print "total tails = ",tailstotal   
print "total flips = ", headstotal+tailstotal
print "Thanks for playing."
raw_input()

最新更新