前提・実現したいこと
マージソートを実装したpythonプログラム作成し、pycharmのpythonコンソール上で実行したところ、Typeerrorが発生しました。
しかし、コマンドプロンプト上でそのプログラムを同様に実行したところ、そちらではうまく実行されました。
pycharm上ではどうしてこのようなエラーが発生したのか、そしてその解決方法を教えて頂けると幸いです。
発生している問題・エラーメッセージ
>>> from merge_sort import sort >>> a = [3,5,2,4] >>> sort(a)
以上のように、pythonコンソール上に入力を行い、その後に出たエラーがこちらです。
return merge(sort(A[:c]),sort(A[c:])) TypeError: sort() takes 1 positional argument but 2 were given
該当のソースコード
python
1def sort(A): 2 if len(A) < 2: return A 3 4 c = len(A) // 2 5 return merge(sort(A[:c]),sort(A[c:])) 6 7def merge(X,Y): 8 if len(X) < 1: return Y 9 if len(Y) < 1: return X 10 if X[0] > Y[0] : return [Y[0]] + merge(X,Y[1:]) 11 else : return [X[0]] + merge(X[1:],Y)
試したこと
def sort(A): if len(A) < 2: return A c = len(A) // 2 return merge(sort(A[:c]),sort(A[c:])) def merge(X,Y): if len(X) < 1: return Y if len(Y) < 1: return X if X[0] > Y[0] : return [Y[0]] + merge(X,Y[1:]) else : return [X[0]] + merge(X[1:],Y) a = [3,5,2,4] print(sort(a))
[2, 3, 4, 5] プロセスは終了コード 0 で完了しました
補足情報(FW/ツールのバージョンなど)
Python3.8 (64-bit)
Pycharm Community Edition 2020.1.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 05:47
2020/06/01 06:11