为什么Python没有打印出正确的答案?

为什么Python没有打印出正确的答案?,python,coin-flipping,Python,Coin Flipping,我不明白为什么Python不打印出我掷硬币游戏中有多少正面和反面?并且一直在打印0,100 # part 2 import random heads = 0 tails = 0 flip_coin = ['heads', 'tails'] while (heads + tails) < 100: flip = random.choice(flip_coin) if flip == heads: heads += 1 else: t

我不明白为什么Python不打印出我掷硬币游戏中有多少正面和反面?并且一直在打印
0
100

# part 2
import random
heads = 0
tails = 0

flip_coin = ['heads', 'tails']

while (heads + tails) < 100:
    flip = random.choice(flip_coin)
    if flip == heads:
        heads += 1
    else:
        tails += 1
print(heads)
print(tails)
#第2部分
随机输入
人头=0
尾部=0
掷硬币=[‘正面’、‘反面’]
而(正面+反面)<100:
抛硬币=随机选择(抛硬币)
如果翻转==头部:
人头数+=1
其他:
尾部+=1
打印(头)
打印(尾部)
有什么想法吗?

你在这里犯了个错误

if flip == heads: # You are comparing with the heads count integer variable
你想要的是

if flip == 'heads': # You want to know if it's the string 'heads'
并且一直在打印出0,100

由于上述错误,如果你分析if-else,因为
flip==heads
总是错误的,你总是得到执行
else:tails+=1
,因此
tails=100
heads=0
你在这里犯了一个错误

if flip == heads: # You are comparing with the heads count integer variable
你想要的是

if flip == 'heads': # You want to know if it's the string 'heads'
并且一直在打印出0,100


由于上面的错误,如果你分析if-else,因为
flip==heads
总是错误的,你总是得到执行
else:tails+=1
,因此
tails=100
heads=0
你忘了把
heads
放在引号下使其成为字符串,正因为如此,if语句总是
false
,因此heads总是0,tails总是100

试试这个:

# part 2
import random
heads = 0
tails = 0

flip_coin = ['heads', 'tails']

while (heads + tails) < 100:
    flip = random.choice(flip_coin)
    if flip == 'heads':
        heads += 1
    else:
        tails += 1
print(heads)
print(tails)
#第2部分
随机输入
人头=0
尾部=0
掷硬币=[‘正面’、‘反面’]
而(正面+反面)<100:
抛硬币=随机选择(抛硬币)
如果翻转==‘头部’:
人头数+=1
其他:
尾部+=1
打印(头)
打印(尾部)

您忘了将
放在引号下以使其成为字符串,因此您的if语句总是
false
,因此头总是0,
尾总是100

试试这个:

# part 2
import random
heads = 0
tails = 0

flip_coin = ['heads', 'tails']

while (heads + tails) < 100:
    flip = random.choice(flip_coin)
    if flip == 'heads':
        heads += 1
    else:
        tails += 1
print(heads)
print(tails)
#第2部分
随机输入
人头=0
尾部=0
掷硬币=[‘正面’、‘反面’]
而(正面+反面)<100:
抛硬币=随机选择(抛硬币)
如果翻转==‘头部’:
人头数+=1
其他:
尾部+=1
打印(头)
打印(尾部)

您只需知道
头(变量)与
'heads'
(字符串)不同。在任何情况下,都有更好的(好的,更Pythonic的)方法来完成Python中两种选择中的简单一种

您可以使用以下列表:

>>> import random
>>> count = 100
>>> heads = len([1 for i in range(count) if random.randint(0,1) == 1])
>>> tails = count - heads
>>> print(heads, tails)
43 57
头的表达式可细分为:

  • 从空列表开始,循环100次
  • 对于每个随机
    0/1
    值为
    1
    的时间,将1添加到列表中
  • 获取列表末尾的长度,它是您翻转1的次数
或者,您可以使用100个随机
0/1
值填充列表,并将其相加:

>>> heads = sum([random.randint(0,1) for i in range(100)])
这比我提供的原始代码片段简单,但它没有显示列表理解的全部功能,因为它可以进行转换、迭代和选择:例如,下面的代码给出了所有小于或等于20的正偶数的平方:

>>> [i * i for i in range(1,21) if i % 2 == 0]
[4, 16, 36, 64, 100, 144, 196, 256, 324, 400]

您只需知道
heads
(变量)与
'heads'
(字符串)不同。在任何情况下,都有更好的(好的,更Pythonic的)方法来完成Python中两种选择中的简单一种

您可以使用以下列表:

>>> import random
>>> count = 100
>>> heads = len([1 for i in range(count) if random.randint(0,1) == 1])
>>> tails = count - heads
>>> print(heads, tails)
43 57
头的表达式可细分为:

  • 从空列表开始,循环100次
  • 对于每个随机
    0/1
    值为
    1
    的时间,将1添加到列表中
  • 获取列表末尾的长度,它是您翻转1的次数
或者,您可以使用100个随机
0/1
值填充列表,并将其相加:

>>> heads = sum([random.randint(0,1) for i in range(100)])
这比我提供的原始代码片段简单,但它没有显示列表理解的全部功能,因为它可以进行转换、迭代和选择:例如,下面的代码给出了所有小于或等于20的正偶数的平方:

>>> [i * i for i in range(1,21) if i % 2 == 0]
[4, 16, 36, 64, 100, 144, 196, 256, 324, 400]

使用强类型语言可以防止此类问题。使用强类型语言可以防止此类问题。