2014-04-05 5 views
0

while 루프에서 this 문을 가지고 있습니다. 정확히 이것과 비슷하지만, 정확히 무슨 일이 벌어지고 있는지 이해하기는 어렵습니다. 나는 자바에서 최근의 변환과 나는 전체 '공백 문제'사업을 파악 약간의 문제가있어 내가 코드의 비트에 대한 설명을 찾을 수 없습니다 :Python IF 문과 공백

if x % 2 == 1: z = z + y 
y = y << 1 
x = x >> 1 

사람이 이유를 설명 할 수 있습니다 z = z + yif과 같은 행에 있습니까? 왜 그 아래의 두 줄이 오른쪽으로 들여 쓰기되어서 if 블록 안에 있지 않습니까? 감사합니다

+0

더 컴팩트하게 만드는 것은 같은 줄에 있습니다. 아래에 들여 쓰기하는 것과 같습니다. 아래 라인들은 if 블록의 일부가 아니기 때문에 들여 쓰여지지 않습니다. – keyser

+0

오 2 라인은 IF와 아무 관련이 없습니까? ... 실제로 실제로 의미가있는 mmk – Criizly

답변

3

이것은 한 줄의 절 단지 속기의

if x % 2 == 1: 
    z = z + y 
y = y << 1 
x = x >> 1 

에 해당합니다.

1

if을 한 줄로 표시 할 수있는 문법적 설탕 일뿐입니다. 가진 것과 같습니다

x = 4; y = 5; z = 0 
while x: 
    if x % 2 == 1: z = z + y 
    y = y << 1; x = x >> 1; print 'x: %s, y: %s, z: %s' % (x, y, z) 

하지만 그렇지 않은 :

x = 4 
y = 5 
z = 0 
while x: 
    if x % 2 == 1: 
    z = z + y 
    y = y << 1 
    x = x >> 1 
    print 'x: %s, y: %s, z: %s' % (x, y, z) 

당신도 해당 단축 할 수

(I는 작동 예를 몇 여분의 라인을 추가). Pythonic하지 않습니다! :-D 나는 또한 Java에서 왔고, 처음에는 ;을 갈구했지만, 익숙해지면 사용할 수 있습니다. (적어도, 나는 그들을 못생긴, 심지어).

+1

... 나는 계속 던지고있다. lol을 깨닫지도 않고. – Criizly