0

我在 Windows 7 32 位机器上使用 Python 3.3.2。

我正在尝试以下语法:

def make_from(inputString):
    if inputString.endswith('y'):
        fixed = inputString[:-1] + 'ies'
    if inputString.endswith(('o', 'ch', 's', 'sh', 'x', 'z')):
        fixed = inputString[:] + 'es'
    else: 
        fixed = inputString + 's'
    return fixed

第一个 IF 条件似乎没有生效.. 其他工作例如,如果我键入make_from('happy')它返回'happys',但如果它键入make_from('brush')它返回'brushes'

我想我错过了一些东西..知道这里发生了什么。

4

1 回答 1

0

当您输入happy以下两条语句时,执行:

if inputString.endswith('y'):
    fixed = inputString[:-1] + 'ies'

else: 
    fixed = inputString + 's'

因为第二个if语句是Falsefor happy。所以fixed是第一次分配happies,但最终happys因为第一次分配被替换

在第二个测试中使用elif代替:if

def make_from(inputString):
    if inputString.endswith('y'):
        fixed = inputString[:-1] + 'ies'
    elif inputString.endswith(('o', 'ch', 's', 'sh', 'x', 'z')):
        fixed = inputString[:] + 'es'
    else: 
        fixed = inputString + 's'
    return fixed

或使用多个返回语句:

def make_from(inputString):
    if inputString.endswith('y'):
        return inputString[:-1] + 'ies'
    if inputString.endswith(('o', 'ch', 's', 'sh', 'x', 'z')):
        return inputString[:] + 'es'
    return inputString + 's'
于 2014-04-17T10:01:13.567 回答