2017-09-10 12 views
0

なぜコードがうまく機能しないのか理解できず、4回質問が繰り返されています。フロートは呼び出し可能ではないと言います。私はかなりしばらくこれをやろうとしましたが、何も得られないようです。 python3のための簡単な方法はありますか?私は2週間前にこの言語を学んだだけです。私にとってまったく新しい世界ではなく、私が慣れ親しんでいない多くのものです。このようインデント質問が4回繰り返され、コールバックが呼び出されず、コードにエラーが発生する

def get_taxi_info(): 
     flag_down = float(input("What's the flag-down fare: $")) 
     within = float(input("What's the rate per 400 meters within 9.8km? $")) 
     beyond = float(input("What's the rate per 350 meters beyond 9.8km? $")) 
     distance = float(input("What's the distance traveled (in meters)? ")) 
     peak = input("Is the ride during a peak period? [yes/no]") 
     mid6 = input("Is the ride between midnight and 6am? [yes/no]") 
     location = input("Is there any location surcharge? [yes/no]") 
     surloca = float(input("What's the amount of location surcharge?")) 
     return (flag_down, within, beyond, distance, peak == 'yes', mid6 == 'yes', location == 'yes', surloca) 

    def calculate_taxi_fare(): 
     dist = get_taxi_info() 
     if dist[3] > 9800: 
      extra = (dist[3] - 9800) % 350 
      if extra == 0: 
       a = (extra//350) + 22 
      else: 
       a = (extra//350) + 23 
      return a 
     elif dist[3] <= 9800: 
      extra = (dist[3] - 1000) % 400 
      if extra == 0: 
       a = (extra//400) 
      else: 
       a = (extra//400) + 1 
      return a 

    def peakornot(): 
     peak = get_taxi_info() 
     if peak[4] == True and peak[5] == False: 
      surcharge = 1.25 
      return surcharge 
     elif peak[4] == False and peak[5] == True: 
      surcharge = 1.50 
      return surcharge 

    taxifare = calculate_taxi_fare() 
    info = get_taxi_info() 
    peak1 = peakornot() 
    taxifare = calculate_taxi_fare() 
    if info[6] == True: 
     payable = ((info[0] + (info[1] * taxifare()) + (info[2] * taxifare())) * peak1[0]) + info[7] 
     print ("The total fare is $" + str(payable)) 
    elif info[6] == False: 
     payable = ((info[0] + (info[1] * taxifare()) + (info[2] * taxifare())) * peak1[0]) + info[7] 
     print ("The total fare is $" + str(payable)) 

答えて

2

taxifarefloat

taxifare = calculate_taxi_fare() 

それは関数呼び出しのように見えるので、したがって、あなたがtaxifare()を言うことができないので、あなただけ使用することができますされ、この行になるよう、floatを返すcalculate_taxi_fare機能として例えば

info[1] * taxifare 
+0

私はそれを返してからやってみました。 TypeError: 'NoneType'オブジェクトはサブスクリプトできません。それはまだ私に4回繰り返し質問します –

関連する問題