А как же просто:
def stringify(x):
if x // 10 % 10 == 1:
return str(x) + 'th'
else:
return str(x) + { 1:'st', 2:'nd', 3:'rd' }.get(x % 10, 'th')
Или, если вы предпочитаете некрасивые хаки:
return str(x) + { 1:'st', 2:'nd', 3:'rd' }.get(x//10%10 != 1 and x%10, 'th')
Я чувствовал себя немного грязно, когда писал это.