2011-10-17 6 views
1

都市名、走行距離計、燃料残量を含むファイルから読み込もうとしています。テキストファイルの内容は次のとおり割り当てのファイルからの読み込み、数値の格納、数値演算

Kennewick 97840.4 40.0<br> 
Benton_City 97861.3 37.6<br> 
Prosser 97878.2 35.9<br> 
Grandview 97886.5 35.0<br> 
Sunnyside 97894.6 34.1<br> 
Granger 97904.6 33.1<br> 
Toppenish 97913.0 32.2<br> 
Wapato 97921.7 31.3<br> 
Union_Gap 97931.6 30.4<br> 
Yakima 97935.2 30.0<br> 
Selah 97939.4 29.6<br> 
Ellensburg 97972.7 26.0<br> 
Thorp 97981.1 25.1<br> 
Rosyln 98002.8 22.6<br> 
Easton 98016.1 21.1<br> 
North_Bend 98058.1 16.9<br> 
Preston 98067.7 16.0<br> 
Issaquah 98073.6 15.4<br> 
East_Gate 98082.9 14.4<br> 
Mercer_Island 98088.5 13.7<br> 
Seattle 98095.4 13.0<br> 

一部が減算された電流リードスルー最後のリードスルー(可変マイルに格納されたそれらの値の両方)から。

def BusRoute(): 
    path = "C:\\" 
    ext = ".txt" 

    lines = "" 
    stopname = "" 
    miles = 0 
    prevmiles = 0 
    milest = 0 
    fuel = 0.0 
    mpg = 0.0 
    i = 0 

    filename = input("Please enter the file name. The file path [C:\...] and extension [*.txt] is not required: ") 

    inFile = open(path + filename + ext, "r") 

    for lines in inFile: 
     stopname, miles, fuel = lines.split(" ") 

     miles = float(miles) 
     fuel = float(fuel) 

     prevmiles = miles 

     milest = miles - prevmiles 

     miles += 1 

     print("Since last stop:", float(milest), "miles") 

私の問題は、私はmilesのCURRENT読み取りから(最後の走行距離が読み)prevmilesという変数にmilesの最後の読み値を保存し、その後prevmilesを引くしようとしていますが、それが引い続けます現在のmilesの現在のmilesから、明らかに私が印刷したい値を0.0にしています。

答えて

1

2つのこと:

  1. 、あなたがmilesを割り当てる二行を交換する必要があるファイルの最初の行でstopnameprevmiles、およびfuelを初期化する必要がある、と
  2. prevmiles

ここ更新機能です:

def BusRoute(): 
    path = "C:\\" 
    ext = ".txt" 

    lines = "" 
    stopname = "" 
    miles = 0 
    prevmiles = 0 
    milest = 0 
    fuel = 0.0 
    mpg = 0.0 
    i = 0 

    filename = input("Please enter the file name (no extension)").strip() 

    inFile = open(path + filename + ext, "r") 

    stopname, prevmiles, fuel = inFile.readline().split() 
    prevmiles = float(prevmiles) 
    fuel = float(fuel) 

    for lines in inFile: 
     stopname, miles, fuel = lines.split(" ") 

     miles = float(miles) 
     fuel = float(fuel) 

     milest = miles - prevmiles 

     prevmiles = miles 

     miles += 1 

     print("Since last stop:", float(milest), "miles") 
+0

ありがとうございます。このコードは機能しました。私がやったことは、残りのプログラムのための一貫したフォーマットであることを少し修正することでした。 – html92

2

あなたはmilestはちょうどそれらの2つのラインの順番を切り替えてみてください0になることを保証

prevmiles = miles 

milest = miles - prevmiles 

を持っています。

+0

だから、私はちょうど今ことを試みたが、それは最初に出力し、「最後の停止以降:-97840.4マイル」、そしてまだ残りの0.0を出力します。 – html92

0

操作の順序を変更するだけです。まず減算を行い、prevmilesに値を代入します。

+0

あなたの言っていることは、他の人の答えに似ていると思いますが、私はまだそれが必要な方法ではうまくいきませんでした。最初のものは、「最後の停止以降:-97840.4マイル」と表示され、それ以外の場合は0.0が表示されます。 – html92

0

私は2つのラインを切り替えて、あなたが探していると思っているものを得ました。

prevmiles = miles 

milest = miles - prevmiles 

注 - このコードは、Python 2.5.4用ですので、私はそれをコメントアウトして、およびので、行の最後に
のいくつかの部分の構文の変更は、燃料用フロートは、エラーを与えていました。

def BusRoute(): 
    path = "C:\\" 
    ext = ".txt" 

    lines = "" 
    stopname = "" 
    miles = 0 
    prevmiles = 0 
    milest = 0 
    fuel = 0.0 
    mpg = 0.0 
    i = 0 

    filename = raw_input("Please enter the file name. The file path [C:\...] and extension [*.txt] is not required: ") #raw_input for text in Python 2.5 

    inFile = open(path + filename + ext, "r") 

    for lines in inFile: 
     stopname, miles, fuel = lines.split(" ") 

     miles = float(miles) 
     ##fuel = float(fuel) (Gives me an error message) 

     milest = miles - prevmiles 

     prevmiles = miles    

     miles += 1 

     print "Since last stop:", float(milest), "miles" #Print syntax is different in Python 2.5 

BusRoute() 

は、出力を提供します:

Please enter the file name. The file path [C:\...] and extension [*.txt] is not required: name 
Since last stop: 97840.4 miles 
Since last stop: 20.9 miles 
Since last stop: 16.9 miles 
Since last stop: 8.3 miles 
Since last stop: 8.10000000001 miles 
Since last stop: 10.0 miles 
Since last stop: 8.39999999999 miles 
Since last stop: 8.7 miles 
Since last stop: 9.90000000001 miles 
Since last stop: 3.59999999999 miles 
Since last stop: 4.2 miles 
Since last stop: 33.3 miles 
Since last stop: 8.40000000001 miles 
Since last stop: 21.7 miles 
Since last stop: 13.3 miles 
Since last stop: 42.0 miles 
Since last stop: 9.59999999999 miles 
Since last stop: 5.90000000001 miles 
Since last stop: 9.29999999999 miles 
Since last stop: 5.60000000001 miles 
Since last stop: 6.89999999999 miles 

は、なぜあなたは、あなたが右の値を取得していることを確認するために、ループ内のファイルからマイルを印刷してみませんか?ここで起こって

+0

完全に正しくない - 最初の行はまだ間違っています。 –

+0

@エースンどのように?最初の行に0マイルを印刷させたい場合は、別の論理セットを使用する必要があります。それが立つと、最初にマイルを0に設定すると、最初の出力は97840.4になります。 –

+0

彼の他のコメントの1つで、彼は... oh、-97840と述べています。4 - 私は眼鏡をきれいにするべきだと思います。 downvoteを元に戻す。ごめんなさい! –

関連する問題