0

このコードを実行すると、部分的に機能します。空の文字列で試してみましたが、コードは機能します。しかし、文字が文字列内にある場合、False と表示されることがあります。

def isIn(char, aStr):
"""char is a single character and aStr is
an alphabetized string.
Returns: true if char is in aStr; false otherwise"""

# base case: if aStr is an empty string
    if aStr == '':
        return('The string is empty!')
        #return False
# base case: if aStr is a string of length 1
    if len(aStr) == 1:
        return aStr == char
# base case: see if the character in the middle of aStr is equal to the test char
    midIndex = len(aStr)/2
    midChar = aStr[midIndex]
    if char == midChar:
        return True
# Recursive case: if the test character is smaller than the middle character,recursively
# search on the first half of aStr
    elif char < midChar:
        return isIn(char, aStr[:midIndex])
# Otherwise the test character is larger than the middle character, so recursively
# search on the last half of aStr
    else:
        return isIn(char, aStr[midIndex:]) 

aStr = str(raw_input('Enter a word: '))
char = str(raw_input('Enter a character: '))
print(isIn(char,aStr))
4

2 に答える 2

5

定義した関数を一度も呼び出していないようです:

aStr = raw_input('Enter a word: ')  #raw_input already returns a string ,no need of str  
char = raw_input('Enter a character: ')
print isIn(char, aStr)                  #call the function to run it

デモ:

Enter a word: foo
Enter a character: o
True

関数の定義と実行:

関数定義は関数本体を実行しません。これは、関数が呼び出されたときにのみ実行されます。

例:

def func():   #function definition, when this is parsed it creates a function object
    return "you just executed func"

print func()    #execute or run the function
you just executed func           #output
于 2013-05-18T22:58:19.237 に答える
0

コードは正しいです。インデントする必要があります。

def isIn(char, aStr):
    """char is a single character and aStr is
    an alphabetized string.
    Returns: true if char is in aStr; false otherwise"""

    # base case: if aStr is an empty string
    if aStr == '':
    ...

次に、次のようにテストします。

>>> isIn('a', 'afdsf')
True
>>> print isIn('a', 'dfg')
False

ちなみに、これは2行で同じことを達成します:

def isIn(char, aStr):
    return char in sStr
于 2013-05-18T22:58:07.633 に答える