2017-05-06 3 views
1

Fragen Sie einfach, ob es einen möglichen Code oder eine Möglichkeit gibt, eine ganze Zeile aus einer Textdatei zu berechnen. Zum Beispiel habe ich die folgende Textdatei;Wie berechnet man eine Zeile aus einer Textdatei?

Force Displacement Theta 
0  0    0 
15  0    0 
3  0.15   0 
1  1    90 
-3  0.15   0 

Ich möchte für Zeile die WorkDone für diese Zahlen Linie berechnen, indem die Gleichung

W = Kraft * Hubraum * cos (Theta)

ich versucht habe;

fname = input("Please enter the filename: ") 
infile = open(fname, "r") 

with open(fname, 'r'): 
    data = infile.readline() 
    f,D,Theta = eval(data) 
    display = f * D * cos(radians(Theta)) 
    output.setText(("%,2f") % display) 

Ich habe keine Ahnung, was ich so bitte helfen

+0

Wo ist die Schleife? Sie erhalten nur die erste Zeile der Datei. – dede

+0

Mach dir keine Sorgen. Ich möchte nur wissen, ob es einen möglichen Code dafür gibt. – Donkey

+0

Sie meinen: Berechnen Sie ein Ergebnis für jede Zeile einer Eingabetextdatei? – xtofl

Antwort

2

habe Wenn ich Sie wäre, würde ich eine Funktion für das Parsen (parse), eine Funktion für die Berechnung (work) erstellen.

def parse(line): 
    return (float(token) for token in line.split()) 

def work(f, d, theta): 
    return f * d * cos(theta) 

Und einige Probleme: die geöffnete Datei sollte einen Namen haben: with open(...) _as infile_: ... Sie müssen es nicht öffnen, bevor der with... Block:

fname = input("...") 
with open(fname, 'r') as infile: 
    infile.readline() # drop the first line 
    for line in infile: 
     f, d, t = parse(line) 
     print(work(f, d, t)) 

Dies sollte die mehr oder weniger tun Trick.

Verwandte Themen