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
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