2016-09-18 49 views
0

我有一個基本的代碼塊,它的一部分會詢問用戶他們的出生年份。爲了完成這個項目,我需要將他們的年份(如1997年)縮短爲一個兩位整數(例如97)。目前,我能解決的唯一方法是減去2000,但顯然這幾乎不起作用。如何在Python中將年份縮短爲兩位整數?

year=input("And finally, what's the year of your birthday? ") 
shortyear=int(year)-2000 

我在網上研究後,切片字符串和整數,但沒有人似乎爲我工作。我仍然在Python中非常基本的,但我猜,應該有一種只選擇一個整數最後兩個字符?:

intyear=int(year) 
shortyear=year[-2:] 

似乎不是爲我工作,雖然。希望有人會有一個可行的答案!

非常感謝!

回答

0

你不驗證輸入,所以使用切片或模數可能會給你無意義的輸出,你應該使用while循環和驗證用戶輸入的,如果你去的verified oldest person in the world一些現實的範圍,一年就是1875年 - 現在:

import datetime 

this_year = str(datetime.datetime.now().year) 
while True: 
    year = input("And finally, what's the year of your birthday? ") 
    if "1875" <= year <= this_year: 
     short_year = year[-2:] 
     break 
    print("{} is not a valid year\n" 
      "Please enter a year between 1875 and {}".format(year, this_year)) 

print(short_year) 
+0

完美,這真的很有幫助。非常感謝! –

1

對於切片工作(year[-2:]),你不應該轉換yearint(即year必須是一個字符串):

year = '2016' 
year[-2:] 
>> '16' 
+0

或者你可以用整數和使用模運算符的工作:'一年%100' –

+0

記如果用戶在'2016'末尾輸入空格,這將會分崩離析,您至少需要先使用'.strip()'字符串以確保不會考慮空白。 –

2

可以使用year%100只得到一個世紀內的數字:

>>> 2000%100 
0 
>>> 2013%100 
13 
>>> 1985%100 
85 
>>> 1997%100 
97 
0

您需要一個函數,它將年份作爲輸入並返回最後兩位數作爲輸出。

由於最後兩位數字可能以0開頭,所以您需要將輸出作爲字符串返回。


假定輸入是一個整數,這裏是用於實現它的一種方法:

def TruncateYear(year): 
    return '%.2d'%(year%100) 

假定輸入是一個字符串,這裏是用於實現它的一種方法:

def TruncateYear(year): 
    return year[-2:] 
相關問題