문제

I am using Python 3.3.2 on a windows 7 32bit machine.

I am trying the following syntax:

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

The first IF condition does not seem to be taking effect .. the others work for example if I type make_from('happy') it returns 'happys', but if it type make_from('brush') it returns 'brushes'.

I guess I am missing something.. any idea whats going on here.

도움이 되었습니까?

해결책

When you enter happy the following two statements execute:

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

and

else: 
    fixed = inputString + 's'

because the second if statement is False for happy. So fixed is first assigned happies but ends up as happys because the first assignment is replaced.

Use elif instead of if for the second test:

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

or use multiple return statements:

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'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top