Python缩进 - 简单错误

时间:2016-11-22 12:51:05

标签: python indentation

所以对蟒蛇来说是全新的,我遇到了一些我无法解释的东西,更不用说单词来找到可能的答案了。我做了一个小小的硬币翻转程序:

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循环中更改了“翻转”的缩进。 谁能告诉我为什么会这样?提前谢谢!

2 个答案:

答案 0 :(得分:1)

那是因为如果那&#34;翻转&#34; line在if中,然后只有在head时才会执行。因此,您的硬币翻转计数仅在其成为头部时递增,因此当flips达到1000时,这意味着您已经执行了if 1000次并获得了1000个头。

(当你得到尾巴时,flips不会增加并且循环继续前进并且没有任何反应)

答案 1 :(得分:1)

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

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

if random.randint(0, 1) == 1:
    heads = heads + 1
    flips = flips + 1
如果条件为True,

...将增加两个变量。

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

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