2016-04-22 76 views
0

我希望所有的函數返回一個數值量,但打印結果的時候給我的錯誤:的Python類型錯誤:不支持的操作數類型(S) - :「海峽」和「廉政」

Traceback (most recent call last): 

File "C:/Users/Servio/Desktop/TravelTrue.py", line 64, in <module> 
    print 'Its total investment is',costo_viaje(ciudad, model, dias, otros_gastos, noches) ,"$ , ", " Suerte!" 

File "C:/Users/Servio/Desktop/TravelTrue.py", line 59, in costo_viaje 
    return type_auto(model) + alquiler_de_auto(dias) + costo_hotel(noches) + costo_del_vuelo(ciudad) + otros_gastos 

File "C:/Users/Servio/Desktop/TravelTrue.py", line 41, in alquiler_de_auto 
    costo = costo - 100 TypeError: unsupported operand type(s) for -: 'str' and 'int' 

的代碼是

def costo_hotel(noches): 

    return 140 * noches 

def costo_del_vuelo(ciudad): 

    cities = { 
     "Cordoba": 821, 

     "Iguazu": 941, 

     "Ushuaia": 1280, 

     "Bariloche": 1848, 

     "Palermo": 1242, 

     "Francia": 6235, 

     "Yugoslavia": 2125, 

     "Vietnam": 2532, 

     "Buenos Aires": 2499, 

     "Montevideo": 2129, 

     "Mexico": 1499, 

     "Moscu": 3499, 

     "Maracaibo": 4499, 

     "Irak": 9998, 

    } 

    return cities[ciudad] 


def type_auto(model): 
    costo_type = model 
    if model == "deportivo": 
     costo_type = 860 
    elif model == "familiar": 
     costo_type = 345 
    return costo_type 


def alquiler_de_auto(dias): 
    costo = dias * 338 
    if dias >= 7: 
     costo = costo - 100 
    elif dias >= 3: 
     costo = costo - 50 
    return costo 

model = raw_input("Que modelo de auto llevara?") 

noches = raw_input("Cuantas noches estara en el hotel?") 

dias = raw_input("Cuantos dias tendra el auto?") 

ciudad = raw_input("A que ciudad viajara?") 

otros_gastos = raw_input("Gastos Generales?") 



def costo_viaje(ciudad, model, dias, otros_gastos, noches): 
    return type_auto(model) + alquiler_de_auto(dias) + costo_hotel(noches) + costo_del_vuelo(ciudad) + otros_gastos 

print 'Its total investment is',costo_viaje(ciudad, model, dias, otros_gastos, noches) ,"$ , ", " Suerte!" 

回答

2

您不能使用操作數與不兼容的類型。舉例來說,如果我有以下幾點:

x = 3 
fruit = "apples" 

我不能這樣做,

print(x + fruit) 

,因爲它們的類型是不同的 - 一個是一個整數,其他的字符串。當強制(鑄造)變量爲另一種類型時,如下所示:

print(str(x) + " " + fruit) 

它們現在都是字符串和兼容的,3變爲「3」。該語句將成功地打印出:

3 apples 

注意:做STR(X)時,變量x仍然保持一個整數,但STR(x)返回一個字符串。

因此,在功能

alquiler_de_auto(dias) 

你被乘以一個整數dias,但dias不是整數 - dias是一個字符串,因爲raw_input()總是返回一個字符串。你可以這樣做int(dias)將字符串更改爲一個整數,從而使它們兼容的類型。

+1

我會補充說str(x)返回對象x的字符串版本,而x本身仍然是一個整數。 – EngineerCamp

+0

所以... 我認爲我已經解決了「int」中的tranformando 3:函數 需要輸入的數字 但是,raw_input鏈總是會問?然後這個很好的變換int或str,它取決於參數: –

+0

{model = raw_input(「Que modelo de auto llevara?」) noches = int(raw_input(「Cuntas noches estara en el hotel?」)) 迪亞斯= INT(的raw_input( 「Cuantos Dias的tendra EL自動?」)) 城=的raw_input( 「A闕城viajara?」) otros_gastos = INT(的raw_input( 「Gastos GENERALES?」))} –

相關問題