2012-04-27 44 views
-3

您好我想創建一個確定用戶輸入的日期是有效還是無效的基本Python程序。我只是難以確定問題出在哪裏並且已經存在了一段時間。任何幫助表示讚賞。這是我的代碼到目前爲止。關於python3.2:創建一個函數來確定用戶輸入的日期是否有效或無效

def main(): 
#get the month day and year 
(month, day, year)=eval(input("Enter month, day, and year numbers:")) 
date1=str(month)+"/"+str(day)+"/"+str(year) 
#determine if user inputted date is valid or invalid 
def Valid (month, day, year): int(month) in range(0,12), int(day) in range(0,31), int(year) in range(0,100000) 
def Verify (month, day, year): 
    if (month, day, year) is Valid (month, day, year): 
     print ((date1), "is a valid date.") 
    else: 
     print ("This is not a valid date.") 

Verify (month, day, year) 

(主)

+1

,什麼是你的問題是什麼呢? – 2012-04-27 00:25:24

+1

另外,請注意,[PEP-8](http://www.python.org/dev/peps/pep-0008/)建議使用''用於功能CapWords''爲類,''lowercase_with_underscores''。 ''eval()''對於任何問題通常也是一個不好的解決方案。我認爲你也已經破壞了代碼的縮進,因爲此刻它沒有任何意義。 – 2012-04-27 00:30:15

回答

0

我纔剛剛開始的Python所以毫無疑問,我沒有做正確,但是,改變你的代碼儘可能少,並留下您的線條作爲我的建議之前的評論:

#determine if user inputted date is valid or invalid 
def Valid (month, day, year): 
    #int(month) in range(0,12), int(day) in range(0,31), int(year) in range(0,100000) 
    return int(month) in range(1,13) and int(day) in range(1,32) and int(year) in range(1,100000) 

def Verify (month, day, year): 
    #if (month, day, year) is Valid (month, day, year): 
    if Valid (month, day, year): 
     print ((date1), "is a valid date.") 
    else: 
     print ("This is not a valid date.") 

#get the month day and year 
(month, day, year)=eval(input("Enter month, day, and year numbers:")) date1=str(month)+"/"+str(day)+"/"+str(year) 
Verify (month, day, year) 

要知道, 「在範圍(0,12)」 將爲0返回True至11和假12;你需要(1,13)進行月份測試。 當然這仍然認爲1989年2月29日和4月31日是有效的。請記住,如果這個世紀也可以被4整除,並且正常使用中沒有0年,那麼可以被4整除的年份只是閏年。

相關問題