私の最初のクラスを取っているpythonは初めてで、これまでのところ非常にうまくやっていますが、この問題は私を殺しています。
問題:
シーケンスの反転は、順不同のエントリのペアです。たとえば、文字 F と D は文字列 'ABBFHDL' の反転を形成します。これは、F が文字列の前にあり、アルファベットの後ろにあるためです。文字 H と D も反転を形成します。シーケンス内の反転の総数、つまり順不同のペアの数は、シーケンスがどの程度ソートされていないかの尺度です。'ABBFHDL' の反転の総数は 2 です。大文字の A から Z までのシーケンス (文字列) を取り、シーケンス内の反転の数を返す関数 inversions() を実装します。
私がこれまでに得たものは次のとおりです。
def inversions(s):
count = 0
for i in range(len(s)): # for each index i
for j in range(len(s)): # for each index J
if s[j]>=s[i]: # compare string[i] and string[j]
count += 0
else:
count +=1
return count
そして、良い部分的なクレジットを得るには、ウサギの穴を十分に下っていません:(
これは私に1を与えるので、これは正しくありません(2である必要があります)。
私が疑問に思っているのは、これが現在大きなハードルになっているのですが、これを達成するためのコードの書き方です: # i より大きいインデックス j ごとに
いくつかのコードを試しましたが、うまくいきません。これらを試しました:
for j in range(len(s)>i): # the result i get is 1
for j in range(len(s)<i): # the result i get is 'blank
for j in range(len(s)>s[i]): # the result i get is this error message :
for j in range(len(s)>s[i]):
TypeError: unorderable types: int() > str()
私が達成できないのは、シーケンス(文字列)内のすべての可能なペアを反復処理する関数を取得することです。
(つまり、AA、AB、AB、AF、AH、AD、AL、BB、BB、BF、BH、BD、BL、(これらのどれもカウントをレンダリングしません。ただし、反復が F に達すると、反転カウントが発生します。 FD、次に HD、したがって答え 2)
私は自分のコードでそこにたどり着くことができません。