2017-12-23 8 views
-6
list_a = ['pratik', 'rahul', 'messi', 342, 34.10] 


def my_sum_and_count(abc): 
    sum = 0 

    for i in abc: 
     if isinstance(i, int) or isinstance(i, float): 
      sum = sum + i 

    return sum 

print(my_sum_and_count(list_a)) 
+4

このsnippetはPython 2.7.14と3.6.3で両方を実行すると376.1を出力します。 – Mureinik

答えて

0

数値/非数値のエントリを評価できるnumpyライブラリを使用することができます。

import numpy as np 

list_a = ['pratik', 'rahul', 'messi', 342, 34.10] 
list_b = ['pratik', 'rahul', 'messi', '342', '34.10'] 

def calculate_sum(l): 
    arr = np.genfromtxt(np.array(l).astype('bytes')) 
    return np.nansum(arr) 

print(calculate_sum(list_a)) 
print(calculate_sum(list_a)) 

戻り値:

376.1 
376.1 
1
list_a = ['pratik', 'rahul', 'messi', 342, 34.10] 

def my_sum_and_count(abc): 
    sum = 0 

    for i in abc: 
     if isinstance(i, (int, float)): 
      sum = sum + i 

    return sum 

print(my_sum_and_count(list_a)) 

output -> 376.1 

しかしあなたのリストがされた場合:

list_a = ['pratik', 'rahul', 'messi', '342', '34.10'] 

、あなたのout_putされました:

0 

リストのすべての要素がSTRである場合には、第1チェックすると良いでしょう:

all(isinstance(item, str) for item in my_list) 

これが真出力します(すべての要素がある場合は文字列)とFalse

(少なくとも1つの要素が整数である場合)出力が真である場合には、例えば印刷する必要があります:(STRを合計することはできません)当方は一切の整数

を持っていないので、だから、最終版は次のようになります。

list_a = ['pratik', 'rahul', 'messi', 342, 34.10] 


def my_sum_and_count(abc): 
    sum = 0 

    if (all(isinstance(item, str) for item in abc)): 
    return " all elements type are str can't be sum " 

    else: 

    for i in abc: 
     if isinstance(i, (int, float)): 
      sum = sum + i 

    return sum 

print(my_sum_and_count(list_a)) 
関連する問題