为什么 Python 没有打印出正确答案?
Why is Python not printing out the correct answers?
我不明白为什么 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)
有什么想法吗?
你在这里做错了
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'
and is consistently printing out 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)
您只需要知道 heads
(变量)与 'heads'
(字符串)不同。无论如何,在 Python.
中有更好的(好吧,更多 Pythonic)方法来进行简单的二选一选择
您可以只使用类似于以下列表理解的东西:
>>> 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
heads
的表达式可以分解为:
- 从一个空列表开始,运行 循环 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]
我不明白为什么 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)
有什么想法吗?
你在这里做错了
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'
and is consistently printing out 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)
您只需要知道 heads
(变量)与 'heads'
(字符串)不同。无论如何,在 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
heads
的表达式可以分解为:
- 从一个空列表开始,运行 循环 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]