Python 缩进 - 简单错误

Python indentation - simple error

python 是个全新的问题,我遇到了一些我无法解释的问题,更不用说用语言来寻找可能的答案了。我做了一个抛硬币的小程序:

import random

print("I will flip a coin 1000 times")
input()

flips = 0
heads = 0

while flips < 1000:
    if random.randint(0, 1) == 1:
        heads = heads + 1
        flips = flips + 1

print()
print("Out of 1000 coin tosses, heads came up " + str(heads) + " times!")

这个版本的程序不行,它告诉我翻转1000次后,每次都有1000次正面。

import random

print("I will flip a coin 1000 times")
input()

flips = 0
heads = 0

while flips < 1000:
    if random.randint(0, 1) == 1:
        heads = heads + 1
    flips = flips + 1

print()
print("Out of 1000 coin tosses, heads came up " + str(heads) + " times!")

此版本的程序运行良好,但请注意,我已经更改了 while 循环中 "flips" 的缩进。 谁能告诉我这是为什么?提前致谢!

那是因为如果 "flips" 行在 if 中,那么它只会在正面朝上时执行。因此,您的掷硬币次数只会在正面朝上时增加,因此当 flips 达到 1000 时,这意味着您已经执行了 if 1000 次并得到 1000 次正面。

(当你得到尾巴时,flips 不会递增,循环继续,什么也没有发生)

Python 语言取决于缩进。与大多数基于 C 的语言不同,它使用缩进来分隔块。

所以你的两个脚本有不同的语义:

if random.randint(0, 1) == 1:
    heads = heads + 1
    flips = flips + 1

...如果条件为真,将递增两个变量。

if random.randint(0, 1) == 1:
    heads = heads + 1
flips = flips + 1

...仅当条件为 True 时才会递增 heads,并且始终递增 flips