2014-02-15 3 views
0

Это моя программа. Любые идеи о том, как я могу создать целую цепочку, но только если вход неверен? Я уже установил большое целое для диапазона, но я не могу понять, где и как установить условия, чтобы это произошло. Все, что я пробовал до сих пор, дал мне ошибку. Любая помощь будет принята с благодарностью.Looping in Python 3

def main(): 

    for i in range(1000): 

    date = (input("enter the date as dd/mm/yyyy: ")) 

    try: 
     datetime.datetime.strptime(date,"%d/%m/%Y") 
     print ("Format is Correct") 
    except: 
     ValueError 
     print ("Format is Incorrect") 

    date = day, month, year = date.split("/") 
    if len(day) == 1 or len(day) == 2: 
     day = int(day) 
     if len(month) == 1 or len(month) == 2: 
      month = int(month) 
      months = ["emp", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", 
         "Aug", "Sep", "Oct", "Nov", "Dec"] 
      if len(year) == 4: 
       year = int(year) 
       if 1899 < year < 3001: 
        if year % 100 == 0: 
         if year % 400 == 0: 
          print ("It's a leap year") 
         else: 
          print ("It is not a lea[ year") 
        else: 
         if year % 4 == 0: 
          print ("It's a leap year") 
         else: 
          print ("It is not a leapyear") 
       else: 
        print ("The year is not in range") 
       if month > 12 or month < 0: 
        print ("The month is out of range") 
       elif month == 4 or month == 6 or month == 9 or month == 11: 
        if day > 30: 
         print ("The date is out of range for the month") 
       elif month == 2: 
        if day > 29: 
         print ("The date is out of range for the month") 
       print(day, months[month], year)    

main() 
+0

Не используйте для с большим целым числом для вашего цикла. Вы можете использовать 'while (condition)' для выполнения своих действий и при настройке хорошего состояния вам даже не нужно использовать ключевое слово 'continue' в вашем цикле, но это плохая идея для использования в вашей программе. –

+0

@HamidFzM Не могли бы вы привести пример использования цикла while в этой конкретной ситуации? – Manaar

ответ

1

Просто используйте continue, чтобы вернуться к началу цикла:

try: 
    datetime.datetime.strptime(date,"%d/%m/%Y") 
    print ("Format is Correct") 
except ValueError: 
    print ("Format is Incorrect") 
    continue 
+0

Размещение продолжения приводит к тому, что программа продолжит цикл, даже если вход является corect – Manaar

+1

@Manaar Это не может быть правдой. Правильно ли отпечаток? – SethMMorton

+2

@sashkello Я рекомендую 'except ValueError:', поскольку, похоже, это было целью OP в исходном коде. – SethMMorton