私は、Pythonを習い始めはしばらく前から3.xと私は数字を追加するか、リスト、タプルとdictsを連結し、非常に簡単なコードを書いた:私の主なのPython 3.xの - 関数引数の型テスト
X = 'sth'
def adder(*vargs):
if (len(vargs) == 0):
print('No args given. Stopping...')
else:
L = list(enumerate(vargs))
for i in range(len(L) - 1):
if (type(L[i][1]) != type(L[i + 1][1])):
global X
X = 'bad'
break
if (X == 'bad'):
print('Args have different types. Stopping...')
else:
if type(L[0][1]) == int: #num
temp = 0
for i in range(len(L)):
temp += L[i][1]
print('Sum is equal to:', temp)
elif type(L[0][1]) == list: #list
A = []
for i in range(len(L)):
A += L[i][1]
print('List made is:', A)
elif type(L[0][1]) == tuple: #tuple
A = []
for i in range(len(L)):
A += list(L[i][1])
print('Tuple made is:', tuple(A))
elif type(L[0][1]) == dict: #dict
A = L[0][1]
for i in range(len(L)):
A.update(L[i][1])
print('Dict made is:', A)
adder(0, 1, 2, 3, 4, 5, 6, 7)
adder([1,2,3,4], [2,3], [5,3,2,1])
adder((1,2,3), (2,3,4), (2,))
adder(dict(a = 2, b = 433), dict(c = 22, d = 2737))
をこの問題は、argsが 'X'グローバルと異なる型を持つときに関数から抜け出す方法です。私はしばらく考えていましたが、私はこれをやるより簡単な方法が見えません(私は単純に結果を印刷するので、他のものを置くことはできません、おそらく私は何かを続けるおよび使用を中断する)。
私はこれを行う簡単な方法が欠けていると確信していますが、私はそれを得ることができません。 ありがとうございます。ここに他のコードに関するアドバイスがありましたら、私はさらなる助けに感謝します。私はおそらく、以前のC++コーディングから来る多くの悪い非Pythonの習慣を持っています。
コードは今や良く見え、型チェックvarはifの外にあるので、グローバルの必要はありません。 あなたの答えをありがとう、それは速かった! – Sqoshu
私はもう少し更新を加えました。リスト内の数字の合計を取得するには、sum()関数を使用します。また、all()関数を使って配列全体の状態をチェックしてみてください。この場合は、すべての型が一致していることを確認していた場所で使用しています。 – lolsborn