我在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}}。
我想我错过了什么......有什么想法在这里发生。
答案 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'