0

何千もの単語を含むテキスト ファイルがあります。アルファベット順に並んでいる単語の数を数えなければなりません。以下は、私が持っている他のコードの束から切り出されたものです。

Counter = 0
    for word in wordStr:
    word = word.strip()
    if len(word) > 4:
    a = 0
    b = 1
    while word[a] < word[b]:
        a += 1
        b += 1
        Counter += 1
return Counter

ここには明らかな問題がいくつかあり、それはわかっていますが、修正方法がわかりません。私の推論は次のとおりです。単語の最初の文字が < 単語の 2 文字目である場合、単語のその部分はアルファベット順です。したがって、単語全体がアルファベット順であることがわかるまで、または文字 a > 文字 b の状況に遭遇するまで、単語に対してこの種の操作を実行して実行する必要があります。

現時点では、私のコードは単語[a] <単語[b]のときにカウンターを増やします。ただし、最初の 2 文字だけでなく、単語全体がアルファベット順の場合にのみ増加するように、これを変更する必要があります。私のもう 1 つの問題は、a と b をインクリメントする方法が原因で、while ループが存在しない文字列インデックスを最終的に比較しようとするため、エラーが発生することです。私は多くのことを書き直す必要があることを知っており、ロジックをダウンさせました..それを実装するのに苦労しています.

編集:以前にこの問題が発生したことを忘れていたので、他の質問の誰かが解決してくれました。混乱させて申し訳ありません。

4

1 に答える 1

4

単語がアルファベット順に並んでいるかどうかを確認する簡単な方法は、単語を並べ替えてから、並べ替えたバージョンが元のバージョンと同じかどうかを確認することです。Python にはsorted()、文字列の並べ替えに使用できる関数があります。ただし、結果はリストとして表示されます。そのため、並べ替えたバージョンを文字列に戻すか、元の文字列をリストに変換する必要があります (2 番目の方法は少し簡単です。文字列を に渡すだけですlist())。

また、最初に文字列を小文字に変換することもできます (または大文字 - 一貫性がある限り問題ありません)。これは、並べ替え順序に影響を与えるためです。すべての大文字は小文字の前に来るためCat、既にテストします。アルファベット順ではありませんが。.lower()これは、文字列オブジェクトの メソッドを使用して行うことができます。

これは宿題のように見えるので、実際のコードは投稿しませんが、私が提供したものから組み立てるのは非常に簡単なはずです。

于 2012-07-11T19:41:31.297 に答える