2016-11-05 85 views
1

我建立爲一個谷歌foobar的該計數列表中的某個字符的量的函數,它創建這個錯誤,類型錯誤:不支持的操作數類型(一個或多個),用於DIV:「STR」和「INT」 [線14]

TypeError: unsupported operand type(s) for div: 'str' and 'int' [line 14] 

這是代碼

def answer(s): 
    sl2 = [] 
    ol = '10' 
    if(len(s) != 0): 
     if(len(s) > 200): 
      print("That is too long") 
     else: 
      s = " ".join(s[i:i+1] for i in range(0, len(s), 1)) 
      sl = s.split() 
      sl_a = sl.count('a') 
      sl_b = sl.count('b') 
      sl_c = sl.count('c') 
      smallest_int = min(sl_a, sl_b, sl_c) 
      final_amount = ol/smallest_int #line 14 (the problem) 
      print(final_amount) 

answer(raw_input('Describe the M&Ms')) 

我不知道,如果這只是谷歌的foobar的編譯器或我有限的知識蟒蛇。

+3

嘗試改變3行至O1 = 10而不「」,在劃分的字符串「10」到整數smallest_int – Skycc

+0

用'/'操作者​​與Python2和Python3行爲不同當心。 3/2 = 1與Python2和3/2 = 1.5與Python3 –

+0

爲什麼不直接計數輸入字符串中的字符? –

回答

1

的問題是,您要除以整型值STR類型值。轉換ol在除法運算使用它或ol設置爲10而非'10'之前爲int類型。

def answer(s): 
    sl2 = [] 
    ol = 10 
    if(len(s) != 0): 
     if(len(s) > 200): 
      print("That is too long") 
     else: 
      s = " ".join(s[i:i+1] for i in range(0, len(s), 1)) 
      sl = s.split() 
      sl_a = sl.count('a') 
      sl_b = sl.count('b') 
      sl_c = sl.count('c') 
      smallest_int = min(sl_a, sl_b, sl_c) 
      final_amount = ol/smallest_int #line 14 (the problem) 
      print(final_amount) 

answer(raw_input('Describe the M&Ms')) 

NOTE :-順便說一句,在JavaScript中,這個事情的作品,JavaScript就隱含使用它與除法運算之前將「10」至10。但是,python不會允許你這樣做。

+1

另外值得一提的整個分工與浮子除法,即蟒2對比蟒3中,作爲紀堯姆Jacquenot指出。 – imranal

1

的錯誤是由於你是企圖分裂對抗整數的字符串。 使用int到01轉換從字符串到int

final_amount = int(ol)/smallest_int 
相關問題