![翻转硬币程序] [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 :(得分:0)
您需要在运行之间将计数器设置为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."
答案 1 :(得分:0)
您还可以使用标准collections.Counter类: (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."
答案 2 :(得分:0)
您的代码,重构。
#coin toss
print "\t\tWelcome to my coin tossing game. I will flip a coin the amount"
print "\t\tof 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()