2014-04-28 3 views
1
import datetime 


def main(): 
    date_string = input('Enter a date in mm/dd/yy format: ') 
    date_list = date_string.split('/') 
    month = int(date_list[0]) 
    day = int(date_list[1]) 
    year = int(date_list[2]) 
    while month < 1 or month > 12: 
     print('Month entered is out of range') 
     date_string = input('Re-enter a date in mm/dd/yy format: ') 
     date_list = date_string.split('/') 
     month = int(date_list[0]) 
     day = int(date_list[1]) 
     year = int(date_list[2]) 
    while day < 1 or day > 31: 
     print('Day entered is out of range') 
     date_string = input('Re-enter a date in mm/dd/yy format: ') 
     date_list = date_string.split('/') 
     month = int(date_list[0]) 
     day = int(date_list[1]) 
     year = int(date_list[2]) 
    while year != 13: 
     print('Year does not represent 2013') 
     date_string = input('Re-enter a date in mm/dd/yy format: ') 
     date_list = date_string.split('/') 
     month = int(date_list[0]) 
     day = int(date_list[1]) 
     year = int(date_list[2]) 
    print(month, day, year) 
main() 

프로그램을 실행하고 유효하지 않은 달과 요일을 입력하면 유효성 검사가 끝날 때까지 진행되며 입력이 다른 입력 중 하나에 대해 유효하지 않은 경우에도 해당 프롬프트를 계속 게시합니다.루프가 너무 일찍 깨지는 동안.

+0

코드는 읽을 수있는 기능을 위해 밖으로 울고 값을 분할합니다. 또한 사용자가 유효한 월 번호와 잘못된 날짜 번호를 입력하면 유효하지 않은 월 번호와 유효한 날짜 번호가있는 데이터를 다시 입력 할 수있는 문제가 있습니다. 등등. –

+0

코드가 올바르게 작동합니다. "17/20/2013"을 입력하면 예상됩니까? –

답변

0

다시 시작하십시오.

3 개의 작은 while 루프를 원하지 않습니다. 하나의 big while 루프 (while not success)에 3 개의 if 문을 사용하여 3 개의 검사를 수행하고 하나가 실패하면 성공을 false로 설정합니다.

1

당신은 다른이를 주선 수 :

while True: 
    date_string = input('Enter a date in mm/dd/yy format: ') 
    date_list = date_string.split('/') 
    month = int(date_list[0]) 
    day = int(date_list[1]) 
    year = int(date_list[2]) 
    if month < 1 or month > 12: 
     print('Month entered is out of range') 
    elif day < 1 or day > 31: 
     print('Day entered is out of range') 
    elif year != 13: 
     print('Year does not represent 2013') 
    else: 
     break 
print(month, day, year) 
+0

빠른 피드백을 주셔서 감사합니다. 나는 내 방식의 오류를 본다. – Luke

관련 문제