[英]random.randint function not working
这个游戏的重点是抛硬币 100 次并记录正面或反面。 在 100 次翻转结束时,程序应该打印出它翻转正面和反面的次数。 该程序仅在我运行时打印头,我觉得它是通过执行第一个 elif 子句而不是 random.randint 函数来实现的。
谁能帮忙完成这个程序??
import random
print ('Coin flip game')
start = input('Press enter to flip the coin')
coin_flip = random.randint(1, 2)
heads = int(1)
tails = int(2)
heads = int(heads)
tails - int(tails)
count = 0
while coin_flip:
count += 1
if count == 100:
break
elif coin_flip == 1:
print ('Heads')
elif coin_flip == 2:
print ('Tails')
尝试这样的事情:
import random
print("Welcome to the coin flipper!")
start = input('Press enter to flip the coin')
count = 0
while True:
coin_flip = random.randint(1,2)
count+=1
if count >100:
break
if coin_flip == 1:
print('Heads')
elif coin_flip == 2:
print("Tails")
这样循环的每次迭代,数字都会改变,因为它在循环内
你也不需要分配所有那些你以后甚至不使用的变量,你应该使用while True:
for the loop
您希望如何打印尚不清楚。 你可以这样做:
>>> import random
>>> print [['H', 'T'][random.randint(0, 1)] for _ in range(100)]
['T', 'T', 'T', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'T', 'H', 'T', 'H', 'T', 'H', 'H',
'H', 'H', 'H', 'T', 'T', 'H', 'T', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T', 'T',
'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'H',
'H', 'H', 'T', 'H', 'T', 'H', 'T', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'H', 'H', 'T',
'H', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'T', 'T',
'H', 'H', 'H', 'H', 'T', 'H', 'H', 'H', 'T', 'T', 'T', 'H', 'H', 'H', 'T',]
要么:
>>> heads = sum(random.randint(0, 1) for _ in range(100))
>>> print "heads =", heads, ' tails =', 100 - heads
heads = 46 tails = 54
你的问题在这里:
while coin_flip: # coin_flip is set to 1 or 2
...
由于coin_flip
设置为 1 或 2,您的循环将是无限的,重要的是coin_flip
不会改变(您没有更新它)。
要解决此问题,您应该通过在循环内coin_flip
分配一个随机数来更新您的coin_flip
:
while True:
count += 1
coin_flip = random.randint(1, 2) # you need to "flip" coin inside the loop
if count == 100:
break
elif coin_flip == 1:
print ('Heads')
elif coin_flip == 2:
print ('Tails')
要计算正面的数量,您可以使用heads
和tails
变量来跟踪:
heads = 0
tails = 0
while True:
count += 1
coin_flip = random.randint(1, 2) # you need to "flip" coin inside the loop
if count == 100:
break
elif coin_flip == 1:
print ('Heads')
heads += 1
elif coin_flip == 2:
print ('Tails')
tails += 1
print "Number of heads: %s, Number of tails: %s" % (heads, tails)
heads,tails,=0,0
import random
for i in range(100):
a=random.randint(1,2)
if(a%2==0):
tails+=1
else:
heads+=1
print 'no. of heads in 100 flips,',heads
print 'no. of tails in 100 flips,',tails
试试这个
我知道这是几年前的事了,但我修正了 Serials 的代码来计算最后的正面和反面的总数:
import random
print("Welcome to the coin flipper!")
start = input('Press enter to flip the coin')
count = 0
heads = 0
tails = 0
while True:
coin_flip = random.randint(1,2)
count+=1
if count >100:
break
if coin_flip == 1:
print('Heads')
heads += 1
elif coin_flip == 2:
print("Tails")
tails += 1
print(f'''
Number of tails: {tails}
Number of times heads {heads}
''')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.