0

ユーザーが入力した一連の数字をバブルソートするプログラムを開発しています。小さな構文エラーがあるようです。これは私が持っているものです:

my_list = '[' + input('Please enter 5 numbers, separated by commas. ') + ']'
length = len(my_list)
for i in range(length):
    for j in range(length-1):
        if my_list[j] > my_list[j+1]:
            my_list[j], my_list[j+1] = my_list[j+1], my_list[j]
        print(my_list)

これは私に次のように返します:

File "C:/Users/Luke/Dropbox/Programming/SDD real.py", line 19, in <module>
my_list[j], my_list[j+1] = my_list[j+1], my_list[j]

TypeError: 'str' オブジェクトは項目の割り当てをサポートしていません

my_list を [1,5,2,3,4] のような定義済みの数値リストに設定すると、バブルソートは意図したとおりに機能します。ユーザーが入力した数値を配列に正しく格納する方法を理解する必要があるだけです。

ありがとうございました。

4

2 に答える 2

1

交換:

my_list = '[' + input('Please enter 5 numbers, separated by commas. ') + ']'

と:

my_list = list(map(int, input('Please enter 5 numbers, separated by commas. ').strip().split(',')))

または:

my_list = [int(i) for i in input('Please enter 5 numbers, separated by commas. ').strip().split(',')]

あなたのコードでmy_listは、リストではなく、文字列です。メソッドを使用しstr.stripて空白を削除し、 メソッドを使用しstr.splitて文字列を分割し、結果のリストを返します。

于 2013-02-10T02:59:47.133 に答える
1

それはリストを作成する方法ではありません。代わりに、次のようにします。

>>> my_list = list(input('Please enter 5 numbers, separated by commas. '))
Please enter 5 numbers, separated by commas. 1, 2, 3, 4, 5
>>> print my_list
[1, 2, 3, 4, 5]
于 2013-02-10T02:59:53.320 に答える