2017-11-18 6 views
-3

私はしばらくこのエラーの解決策を探していましたが、他の人に役に立たなかった解決策はあまり役に立ちませんでした。'function'タイプのオブジェクトにはPythonのlen()がありません

ここに私が書いたコードがあります。

def main(): 
    while True: 
     userInput() 
     characterCount(userInput) 
     middleLetter() 
     spaceCount() 
     letterReplace() 
     displayOutput() 


def userInput(): 
    sentence = str(input('Enter a sentence at least 10 letters long, or type STOP to quit:')) 
    if sentence == 'STOP': 
     quit() 
    return sentence 

def characterCount(sentence): 
    characterCount = len(sentence) - sentence.count(' ') 
    if characterCount < 10: 
     print('Sorry that is less than 10 letters') 
    return characterCount 

def middleLetter(sentence): 
    sentence = len(sentence)/2 
    middleLetter = [sentence +1] 
    return middleLetter 

def spaceCount(sentence): 
    spaceCount = sentence.count(' ') 
    return spaceCount 


def letterReplace(sentence): 
    letterReplace= sentence.replace("a", "&") 
    return letterReplace 


def displayOutput(characterCount,middleLetter,spaceCount,letterReplace): 
    print('Number of letters: '(characterCount)) 
    print('Middle letter: '(middleLetter)) 
    print('Spaces counted: '(spaceCount)) 
    print('Sentence with letter replaced: '(letterReplace)) 


main() 

問題は私がプログラムを実行するとエラーが発生することです。

Traceback (most recent call last): 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 59, in <module> 
    main() 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 18, in main 
    characterCount(userInput) 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 32, in characterCount 
    characterCount = len(sentence) - sentence.count(' ') 
TypeError: object of type 'function' has no len() 

このエラーは、文字列の代わりにintが使用されているために発生していますが、このエラーの原因がわかりません。どんな助けもありがとう。

与えられた提案のいくつかを使用して、元のエラーを修正しましたが、今すぐ実行しようとするとエラーが発生します。

Traceback (most recent call last): 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 59, in <module> 
    main() 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 22, in main 
    displayOutput(characterCount,middleLetter,spaceCount,letterReplace) 
    File "C:\Users\wood\Desktop\Software design\Program 4\program3_4QuinnWood.py", line 53, in displayOutput 
    print('Number of letters:'(characterCount)) 
TypeError: 'str' object is not callable 
+0

'user_input = userInput();を試してください。あなたの 'while True'ループ内のcharacterCount(user_input)' – ZdaR

答えて

0

あなたはuserInput()の出力をキャプチャする必要があります。

while True: 
    sentence = userInput() 
    characterCount(sentence) 
    ... 
0

あなたは、引数としての機能と、ここで関数を呼び出すためにしようとしています。

userInput() 
characterCount(userInput)

代わりに戻り値を変数に取り込み、その変数を引数として他の関数を呼び出します。

def f(): 
    return 4 

def c(f): 
    return f 

x = c(f) # <function f at 0x00000231D4063A60> 
print(dir(x)) 

# ['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] 

ユアーズコードでlen()

0

を持たないオブジェクトuserInput無LENを有していません()。しかしオブジェクトuserInput() - があります。

関連する問題