

Python初心者です。  
テキストファイルを読み込むプログラムの中に2つのファンクションを入れて、最終的にバラバラの順に縦並びに配置されたテキストファイル内の数字を上から小さい順に並び変えて結果をコマンドラインに出力する練習をしています。  
ですが、何度試してもエラーメッセージばかりがコマンドで出てしまい、プログラムが上手く機能しません。  
下記にコードとテキストファイルの内容、本来の出力結果を記載するので、コードで間違っている部分があれば、教えて下さい。

# プログラム全体（2つのファンクションを含む）

[code]

    from sys import argv
    
    def divide(p,r):
        x = A[r]
        i = p - 1
    
        for j in len(p, r - 1):
            if (A[j] <= x):
                i += 1
                A[i], A[j] = A[j], A[i]
    
        A[i+1], A[r] = A[r], A[i+1] 
        return(i+1)
    
    
    
    def sort205(p,r):
        if (p < r):
            q = divide(p,r)
            sort205(p,q - 1)
            sort205(q + 1,r)
    
    
    
    
    A = []
    p = 0
    
    
    
    
    if len (argv) == 1:
        print ("Type argument/filename.") 
    else:
        filename = argv[1]
        try:
            with open(filename) as file:
                contents = file.read()
        except IOError:
            print("No File Found")
        else:
            file = open(filename)
    
    
    
            for line in file: 
                line = line.rstrip()
            　　A.append(line)
            r = len(A)
            sort205(p,r)
            
            print (A)
    
    
[/code]

# テキストファイル内容

[code]

    255
    49152
    128
    64
    4
    20
    500
    
    
[/code]

# 趣旨とするコマンドライン上の出力結果

[code]

    4
    20
    64
    128
    255
    500
    49152
    
[/code]

# エラーメッセージ内容

[code]

      File "RecursionLab.py", line 52, in <module>
        sort205(p,r)
      File "RecursionLab.py", line 22, in sort205
        q = divide(p,r)
      File "RecursionLab.py", line 6, in divide
        x = A[r]
    IndexError: list index out of range
    
[/code]


CC BY-SA 4.0
2020-02-07T05:58:46.510
62847
2020-02-07T11:08:06.760
2020-06-17T08:14:45.997
-1
37615
question
python
Python でテキストファイル内の縦並びの数字を小さい順に並び変えて、結果をコマンドプロンプトに出力したい。


コメントで教えて下さった内容を踏まえて無事動作するようになったプログラムを下記に載せます。

[code]

    from sys import argv
    
    
    def divide(p,r):
        x = A[r]
        i = p - 1
    
        for j in range(p, r):
            if (A[j] <= x):
                i += 1
                A[i], A[j] = A[j], A[i]
    
    
        A[i+1], A[r] = A[r], A[i+1]
    
        return(i+1)
    
    
    
    def sort205(p,r):
        if (p < r):
            q = divide(p,r)
            sort205(p,q-1)
            sort205(q+1,r)
    
    
    p = 0
    
    
    if len (argv) == 1:
        print ("Type argument/filename.") 
    else:
        filename = argv[1]
        try:
            with open(filename) as file:
                contents = file.read()
        except IOError:
            print("No File Found")
        else:
            file = open(filename,"r")
            A = file.readlines()
    
            for line in range(0,len(A)): 
                A[line] = int (A[line])
            r = len(A)
            sort205(0,r-1)
    
            print (A)
    
[/code]


CC BY-SA 4.0
2020-02-07T11:08:06.760
62855
2020-02-07T11:08:06.760
37615
62847
answer