2016-11-22 2 views
0

그래서 파이썬에 대한 새로운 브랜드와 나는 설명 할 수없는 것을 발견했습니다. 가능한 답을 찾기 위해 단어를 넣지 않았습니다.파이썬 들여 쓰기 - 간단한 오류

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 루프에서 "들여 쓰기"의 들여 쓰기를 변경했습니다. 누구나 이것이 왜 있는지 말할 수 있습니까? 미리 감사드립니다!

+1

를 증가 경우에만 heads을 증가합니다 (0, 1) == 1'은 참입니다. – Chr

+0

들여 쓰기는'flips = flips + 1'이 이제'if' 조건의 바깥에 있음을 의미합니다. 다른 언어에서는 대/소문자가 true/false 인 경우 if 조건이 수행 할 작업을 나타내는 데 사용됩니다. – Takarii

답변

1

파이썬 언어는 들여 쓰기 의존한다. 대부분의 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 

... 조건이 + 1` 경우에만 조건 'random.randint 경우 수행 넘겼 = True입니다, 항상 첫 번째 경우`플립에서 flips

1

"flips"행이 if에 있으면 머리 인 경우에만 실행됩니다. 따라서 동전 던지기 횟수는 머리 일 때만 증가하므로 flips이 1000에 도달하면 if 번을 1000 번 실행하고 1000 개의 머리를 얻었음을 의미합니다.

(당신이 꼬리를 얻을 때, flips이 증가하지 않으며 루프가는 유지하고 아무 일도 발생하지 않습니다)