1

割り当て:

c大文字と小文字を区別せずに、 string 内の文字の出現回数を返しsます。ループを使用します。count同様のことを行う組み込みの string メソッドは使用しないでください。アイデアは、ループの書き方を学ぶことです。sの文字をと比較するときは、大文字と小文字を区別しないでくださいc

私の試み:

 def countletter(s, c): #BAD
     count = 0
     for c in s:
        if c == c:
        count += 1
        return count

私は正しい軌道に乗っていますか?メインでテストすると、いくつかのアサーションエラーが発生するようです...

4

5 に答える 5

2

あなたreturnは間違った場所にいます。したがって、関数は実際には1回の反復後にのみ返されます。

またc、 for ループで変数名を使用しないでください。別の変数を使用してください。c関数呼び出しから受け取った の値をfor-loop.

def countletter(s, c): #BAD
    count = 0
    for x in s:
        if x.lower() == c.lower():
            count += 1
    return count


print countletter("abcdefFf","F") #prints 3
print countletter("a","A")        #prints 1
于 2012-10-27T18:57:50.820 に答える
2

上記の回答に加えて、Python には組み込みのメソッド カウントがあります。この関数が宿題などでない場合は、プロジェクトで使用できます (ああ、今見ました、宿題です。しかし、追加情報は無害です.:))

"baris".count("b")

1 を返します

于 2012-10-27T19:01:23.037 に答える
0

cによって定義された変数を比較すると、for c in s:常に true になります。したがって、比較は次のようになりc == 'c'(大文字と小文字を区別しないチェックを行う方法を理解できます)、リターンが正しくインデントされていません

于 2012-10-27T18:58:44.190 に答える
0

return文の位置が間違っています。4 つのスペース (または使用したタブ) を削除します。

于 2012-10-27T19:01:56.937 に答える
0

組み込みメソッドの外でこれを行う方法の別の例としてcount()、ジェネレーター式とsum()組み込みメソッドを使用できます。

>>> def countletter(s, c):
...     return sum(x.lower() == c.lower() for x in s)
... 
>>> countletter("abcdefFf", "F")
3
>>> countletter("a", "A")
1

私たちがしていることは、Trueand Falses (True文字が一致する場所) のジェネレーターを生成することです。次に、Python の場合と同様にsum()カウントを返します。True1False0

>>> True == 1
True
>>> False == 0
True
于 2012-10-27T20:38:15.900 に答える