2016-07-26 12 views
3

이 연습은 Zed Shaw의 책 20 장에서 나온 것입니다.파이썬에서 줄 인쇄

줄 번호의 동작을 이해하려고합니다.

다음 코드를 사용하면 텍스트 파일의 줄 번호가 4로 잘못 인쇄됩니다. 3 행에 있습니다. 나는 다음 사용할 때

current_line += current_line 

그러나, 줄 번호는 올바른 보여줍니다

current_line = current_line + 1 

누군가가 친절하게 나에게 같은 보이는 위의 두 줄의 차이이고, 왜하고 있는지 설명 할 수 차이.

다음은 전체 코드입니다 :

from sys import argv 
script, input_file = argv 

def print_all(f): 
    print f.read() 

def rewind(f): 
    f.seek(0) 

def print_a_line(line_count, f): 
    print line_count, f.readline() 

current_file = open(input_file) 

print "First let's print the whole file:\n" 

print_all(current_file) 

print "Now let's rewind, kind of like a tape." 

rewind(current_file) 

print "Let's print three lines:" 

current_line = 1 
print_a_line(current_line, current_file) 

current_line += current_line 
print_a_line(current_line, current_file) 

#current_line = current_line + 1 
current_line += current_line 
print_a_line(current_line, current_file) 
+0

잘 알고 있듯이 나는 잘 구성된 초급 질문의 훌륭한 예이기 때문에이 질문을지지하고 선호했다. 문제를 (예상 결과와 실제 결과로) 설명하고 명확하게 질문을하고 [MCVE] (http://stackoverflow.com/help/mcve)를 포함 시켰습니다. 많은 초보자 (프로그래밍 및 스택 오버플로 사용)는 이들 중 하나 이상을 제외합니다. 이런 식으로 질문하는 것을 그만 두지 마십시오. – skrrgwasme

+0

정말 고마워요 :) - 나는 앞으로이 질문을하면서이 점들을 염두에 둡니다. – Sarat

답변

2

current_line + = current_line 그것을 밖으로 확대

current_line = current_line + current_line 

그래서, 당신이 무슨 짓을했는지 살펴보고 있습니다에게 확장 (우리는 무시됩니다 print 문).

current_line = 1 
current_line = current_line + current_line # (1 + 1 = 2) 
#current_line = 2 
current_line = current_line + current_line # (2 + 2 = 4) 
#current_line = 4 

내가 대신 당신이 기하 급수적에 의해 증가하고, 당신은 당신이 일의 일정 비율로 current_line의 값을 증가하지 않을

current_line += 1 
+0

감사합니다 Taztingo. 지금은 이해. – Sarat

+0

문제 없습니다 :). – Taztingo

0

사용하는 의미 생각합니다.

current_line = 5 
current_line = current_line + current_line 
>>> current_line 
>>> 10 

current_line = current_line + 1 또는 current_line += 1은 (+=11하여 값을 증가시키기위한 문법적이다) 1.

의해 current_line의 값을 증가시킨다 :

current_line += current_line

current_line의 값 + 자체를 그 자체로 할당
current_line = 5 
current_line = current_line + 1 
current_line += 1 
>>> current_line 
>>> 7 

current_line회선 번호가 인 경우이 경우 += 1을 사용해야합니다.

+0

고맙습니다. 나는 프로그래밍의 초보자이며 이것이 작동하는 방법을 모른다. – Sarat

+0

@Sarat Yeeep 걱정하지 마세요. – ospahiu