序数错误,Python 3

时间:2016-08-05 12:07:37

标签: python-3.x ordinals

我的Python代码有问题。我试图显示用户输入的序号。因此,如果我输入32,它将显示第32,或如果我输入576,它将显示第576。唯一不起作用的是93,显示第93。其他所有数字都有效,我不知道为什么。这是我的代码:

num = input ('Enter a number: ')
end = ''
if num[len(num) - 2] != '1' or len(num) == 1:
  if num.endswith('1'):
    end = 'st'
  elif num.endswith('2'):
    end = 'nd'
  elif num == '3':
    end = 'rd'
  else:
    end = 'th'
else:
  end = 'th'
ornum = num + end
print (ornum)

2 个答案:

答案 0 :(得分:1)

您在2个地方使用endswith(),而不是3:

if num.endswith('1'):
    end = 'st'
elif num.endswith('2'):
    end = 'nd'
#elif num == '3':  WRONG
elif num.endswith('3'):
    end = 'rd'

在你的代码中,它将测试'如果num等于3'而不是'如果num以3结尾'。

答案 1 :(得分:0)

出于某种原因,您忘记在public function postEditGeneralSettings(UserRepository $repo) { //an alternative to your validation, using the ValidatesRequests trait of the controller //this will give the same results of your validation, but is more concise $this->validate( CUserRepository::$rules, Input::all() ); // Update using the repository $repo->update( Auth::user(), Input::all() ); return $this->backWithSuccess('Innstillingene ble lagret!'); } 时检查endswith()

3

在旁注中,您可以通过阅读SE Code Review上的this question来改进您的代码,其中包括这个非常棒的版本:

elif num.endswith('3'):
    end = 'rd'