2016-10-15 3 views
-2

異なる段階数に価格を提供するプログラムを作成しようとしています。 "tripss.txt"では、3行目が数字12で、代わりに1と2と解釈され、数字としてではなく、それぞれの価格が全体としてどのように解釈されるのですか?ファイルから12を読み込み、12ではなく1と2にします。

infile = open("tripss.txt","r") 
customer_one= infile.readline().strip("\n")  
customer_two= infile.readline().strip("\n") 
customer_three= infile.readline().strip("\n")  
one_to_three_stages="euro 1.55" 
four_to_seven_stages="euro 1.85" 
seven_to_eleven_stages="euro 2.45" 
more_than_eleven_stages="euro 2.85" 
cheapest = ["1","2","3"]  
cheap = ["4","5","6","7"]  
expensive = ["7","8","9","10","11"]  
    for number in customer_three:  
    if number in cheapest: 
     print one_to_three_stages  
    elif number in cheap:  
     print four_to_seven_stages  
    elif number in expensive:  
     print seven_to_eleven_stages 
    else:   
     print more_than_eleven_stages  
+1

インデントが壊れています。そしておそらくあなたの文字列をintに変換する必要があります(もしそれがあなたが望むならば)、または単一の文字列をループしないでください。 –

+0

入力例を入力してください。私は、例えば、3行目はあなたのコメントからちょうど "12 \ n"だと思うが、わからない。 – tdelaney

答えて

0

あなたのコードでは、customer_threeを文字列のリストとみなしたいと思うようです。しかし、あなたのコードでは文字列ではなく文字列のリストなので、forループは文字列( "1"と "2")の文字を繰り返し処理します。
だから私はあなたが交換することをお勧め:

customer_three= infile.readline().strip("\n") 

で:

customer_three= infile.readline().strip("\n").split() 
0

あなたは3行目は数12あるのでcustomer_three= infile.readline().strip("\n")後、customer_threeは、文字列"12"になりますと言います。 forループfor number in customer_three:を開始すると、numberには文字列の各要素が割り当てられます。最初に"1"、次に"2"に割り当てられます。

解決策は簡単です。 customer_threeには既に必要な文字列があります。 forループを完全に取り外します。

関連する問題