类型错误:不支持的操作数类型(一个或多个),用于DIV:“STR”和“INT” [线14]

问题描述:

我建立为一个谷歌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

为什么不直接计数输入字符串中的字符? –

的问题是,您要除以整型值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

的错误是由于你是企图分裂对抗整数的字符串。 使用int到01转换从字符串到int

final_amount = int(ol)/smallest_int