2

だから私はこれを実行しようとしていますが、エラーが発生し、何が問題なのかを理解するのに助けが必要です. 私はMITオープンコースウェア入門をプログラミングに取り入れています:

words="GreatTimes"
words.lowercase

そして、私はこのエラーを受け取ります:

AttributeError: 'str' object has no attribute 'lowercase'

問題は、「コンピューター科学者のように考える方法」のサンプル コードを実行しようとしても、エラーが発生することです。

def isLower(ch):
    return string.find(string.lowercase, ch) != -1

そのため、構文エラーが何であるかを理解できません。Python doc ページを見ると、次のように書かれています。

string.lowercase 小文字と見なされるすべての文字を含む文字列。ほとんどのシステムでは、これは文字列「abcdefghijklmnopqrstuvwxyz」です。特定の値はロケールに依存し、locale.setlocale() が呼び出されると更新されます。

考え?

編集:ああ、申し訳ありませんが、もっと明確にする必要があります。そのため、文字列内の文字が小文字かどうかを示すコードを作成しようとしています。私のコードはそれの私の実装です。サンプルコードは、構文が間違っているかどうかを確認するために使用しているものであり、それが問題の原因です。ただし、サンプル コードでもエラーが発生します。一言で言えば、なぜこのコードは機能しないのでしょうか? "GreatTimes" から "reatimes" のようなすべての小文字の文字列を吐き出す必要があるようです。また、string.lowercase をどのように使用してこのプログラムを作成しますか?

4

3 に答える 3

8

あなたが何をしようとしているのか、私は少し混乱しています。これはかなり不自然な演習のようです。

  • インスタンス メソッドを使用するだけの場合、words.lower()は文字列の小文字バージョンを返しますwords

  • 独自の小文字関数 (すべて小文字の文字列に設定された単なる定数) を使用して実装したい場合は、それを呼び出す前にstring.lowercase必ず実行する必要があります(たとえば、関数の例)。import stringlower

  • を実行した場合は、代わりにimport string使用することもできますstring.lower('STRING with CAPS')

編集:機能を示すために、関数を実行するコードを次に示します。

import string

def isLower(ch):
    return string.find(string.lowercase, ch) != -1


words = "GreatTimes"

lowercase_letters = ""
for ch in words:
    print ch, '->', isLower(ch)

    if isLower(ch):
        lowercase_letters += ch

print "Lowercase letters were:", lowercase_letters

出力:

G -> False
r -> True
e -> True
a -> True
t -> True
T -> False
i -> True
m -> True
e -> True
s -> True
Lowercase letters were: reatimes
于 2011-05-20T05:10:08.493 に答える
0

小文字は、string モジュール内の文字列の名前です。

import string string.lowercase 'abcdefghijklmnopqrstuvwxyz'

ただし、文字列インスタンスを介してアクセスすることはできません:

word = 'これは文字列' word.lowercase トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、AttributeError: 'str' オブジェクトに属性 'lowercase' がありません

また、find メソッドはあなたが考えていることをしません。ドキュメントを確認してください。

アレン

于 2011-05-20T23:50:07.820 に答える