2016-09-18 4 views
0

나는 기본적인 코드 블록을 가지고 있으며, 그 일부는 사용자에게 그들의 생년월일을 묻는다. 프로그램을 완료하려면 연도 (예 : 1997)를 두 자리 정수 (예 : 97)로 단축해야합니다. 현재 내가 해결할 수있는 유일한 방법은 2000 년을 감산하는 것이지만 간신히 작동하는 것은 분명합니다.파이썬에서 연도를 두 자리 정수로 줄이는 방법은 무엇입니까?

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

문자열과 정수를 온라인으로 조사했지만 그 중 아무 것도 나를 위해 작동하지 않는 것 같습니다. 나는 아직도 파이썬에서 매우 기본이야하지만 그래도 난, 나를 위해 작동하지 않는 것

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

? : 오직 정수의 마지막 두 문자를 선택하는 방법이 있어야 같은데요. 바라기를, 누군가는 작동하는 응답이있을 것이다!

대단히 감사합니다! 당신이 intyear 변환 안 (year[-2:]을) 작업을 거친 공격 태도를 보여준

답변

0

입력의 유효성을 검사하지 않으므로 슬라이싱 또는 모듈러스를 사용하면 무의미한 결과가 나올 수 있습니다.

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) :

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

아니면 정수 및 사용 나머지 연산자로 작업 할 수 있습니다 :'년간 % 100' –

+0

주 동안 루프와 사용자를 확인 당신이 verified oldest person in the world으로 가면 몇 가지 현실적인 범위에서 올해 1875 - 지금갑니다 사용자가'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:] 
관련 문제