2014-09-29 1 views
-5

테스트 문제 없다파이썬 기능 : 응답 YES 또는 NO - 비슷한 통과 연도가 1582 이상인 것을

def gregyear(): 

    try: 
     year =raw_input("Pick a year greater than or equal to 1582. It has to be divisible by four.)\n") 
     year =float(year) 
     leapyear = "Yes" 
    except: 
     print "please, only numbers" 
    else: 
     year =float(year) 
     if year >= 1582: 
      if year % 4: 
       print year 
       leapyear= "Yes" 
      else: 
       leapyear= "No" 
     else: 
      print "Wrong... print a year greater than 1582" 


    return leapyear 

gregyear() 
print "leapyear is "+ leapyear +"." 
+0

무엇이 당신의 질문입니까? 모든 코드를 게시하면됩니다. –

+1

먼저 파이썬 기본 사항을 이해하십시오. 스택 추적을 통해 진행 상황을 파악할 수있는 좋은 기회입니다. 예 :'leapyear'는 코드 끝의 인쇄 범위에 정의되어 있지 않습니다. (함수가 값을 반환하는 방식 등을 이해하는 좋은 시작점입니다.) – karthikr

답변

1

먼저, 파이썬, 0 falsey이고, 다른 모든 숫자 truthy있다 . 그래서, 당신이 할 때 : 연중 그래서 당신의 논리가 역방향 하지 나눌 4가있는 경우 year % 4 아무것도 의미 0을 제외한 경우

if year % 4: 

... 그 트리거합니다. gregyear가 값을 반환 않는 동안 당신이 그것을 사용하려는 경우


둘째는, 그 반환 값을 무시, 당신은 그것을 저장할 수 있습니다

leapyear = gregyear() 

셋째, 당신은 할 수 없습니다 숫자에 문자열을 추가, 그래서 이것은 TypeError 올릴 것이다 : 당신은 아마 원하는 무엇

print "leapyear is "+ leapyear +"." 

되는 중 연평균 SS는 print에 문자열과 숫자 마술과 같이 인쇄 함께하면서 연결하는 : 나는 여분의 공백을 제거

print "leapyear is", leapyear, "." 

공지 사항을 쉼표로 print가 자동으로 인수 사이에 공간을두고 있기 때문이다. 보조 노트로


print "leapyear is {}.".format(leapyear) 
, 당신은 또한 1700, 1800를 만드는 규칙을 놓치고, 1900 년 도약하지 :

그러나이 쓰기에 더 좋은 방법은 문자열 서식입니다 (1600 년과 2000 년 동안).

관련 문제