2014-11-25 6 views
-1

나는 최종 프로젝트를 가지고 있습니다. 이 부분이 나를 걸러 내고 있습니다.파일의 특정 줄을 사용하여 파이썬에서 인쇄하는 방법

A 500 600 700 144.666 

을 그리고 당신이, 그래서 그것을 말할만큼 간다 : 나는 마지막 숫자가 750을 초과하면 파일은 다음과 같은 파일에서 전체 라인을 당겨하는 방법을 알아낼 필요 J 또는 Q 또는 F 또는 무엇이든간에. 네 번째 숫자가 750 이상이면 전체 줄을 인쇄해야합니다. 요구 사항은 다음과 같습니다 :

750km 미만의 거리에있는 소행성의 X, Y 및 Z 위치로 화면에 경고 메시지를 인쇄하십시오.

가장 가까운 소행성의 경우 콘솔에 경고 메시지를 보내고 7 번의 경고음 (실제 경고음)이 울립니다.

경고 메시지는 다음과 같이 보일 수 있습니다. 소수점 이하 두 자리 만 표시됩니다.

Warning - Warning - Warning 
Nearest asteroid B at ??, ??, ??: ?? km away 
Time to impact ??? seconds 
asteroid B at at ??, ??, ??: ?? km away 
asteroid D at at ??, ??, ??: ?? km away 

나는 소리 부분에 아직 접근하지 못했습니다. 전체 줄을 인쇄하는 방법을 알아야합니다. for 루프 또는 if 문을 가정합니다. 내 첫 프로그래밍이기 때문에 조금 잃어 버렸어.

+0

그러면이 문제를 재현 할 수있는 코드 스 니펫과 예제 파일을 보여줄 수 있습니까? – Dijkgraaf

답변

0
with open("path/to/your_file") as f: 
    for line in f: # loop over every line 
     spl = line.split() 
     if float(spl[4]) > 750:# split on whitespace and check if fourth/last digit is > 750 
      print(line) 
     else: 
      print("Alarm! asteroid within 750km, position {} {} {}".format(spl[1],spl[2],spl[3])) 
In [4]: line = "A 500 600 700 144.666" 

In [5]: line.split() # splits into individual elements 
Out[5]: ['A', '500', '600', '700', '144.666'] 

In [6]: float(line.split()[4]) # casts the string to a float 
Out[6]: 144.666 
당신은 창에있는 경우

1 알람에 대한 winsound을 사용할 수 있습니다 또한, 750.1 > 750

를 오류가 발생하는 floatint('144.666')로 캐스트 할 필요가

: https://docs.python.org/2/library/winsound.html 또는 pyglet 크로스 플랫폼을 보인다

+0

내 파일로 대체 된 's'에는 특성이 없다는 것을 알려줍니다. 나는 또한 내가 's'로 내 파일에 추가하는 데 사용하는 목록을 배치하려고했고 그것은 똑같이 말했다. : – Jackie

+0

@ Jackie. 그것은 오타가 아니 었습니다. 오타였습니다. 같은 디렉토리에 있지 않으면 파일의 전체 경로를 제공해야합니다. –

0
import csv 

with open('path/to/file') as infile: 
    for row in csv.reader(infile, delimiter=' '): 
     if int(row[4]) > 750: 
      print(' '.join(row)) 
0

처음에는 이와 같은 파일

with open('file.txt') as f: 
    for line in f: 
     ##split the line by your deliminator (assumming it is tab delimitated), this will return a list 
     fields = line.split('\t') 
     ### determine if fields[4] which correspond to the 5th column (python list are 0 based) 
     if (int(fields[4]) > 750) 
      print(line) 
+0

'print (line)'이 파이썬 2와 3에서 작동합니다 –

관련 문제