str.endswith()似乎没有考虑第一个if语句

时间:2014-04-17 09:57:42

标签: python if-statement python-3.3 ends-with

我在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')则返回{{ 1}}。

我想我错过了什么......有什么想法在这里发生。

1 个答案:

答案 0 :(得分:0)

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

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

else: 
    fixed = inputString + 's'

因为if的第二个False语句为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

或使用多个return语句:

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'