2013-06-12 62 views
0

我期待從上面的代碼輸出一些數字,但我沒有得到它。 我是python的新手,但開始使用PHP進行編碼。 很抱歉,如果我去錯了一些where.thanks我的代碼沒有給出輸出,我期望有一些數字

# By Websten from forums 
# 
# Given your birthday and the current date, calculate your age in days. 
# Compensate for leap days. 
# Assume that the birthday and current date are correct dates (and no time travel). 
# Simply put, if you were born 1 Jan 2012 and todays date is 2 Jan 2012 
# you are 1 day old. 
# 
# Hint 
# A whole year is 365 days, 366 if a leap year. 
def nextDay(year, month, day): 
    """Simple version: assume every month has 30 days""" 
    if day < 30: 
     return year, month, day + 1 
    else: 
     if month == 12: 
      return year + 1, 1, 1 
     else: 
      return year, month + 1, 1 

def daysBetweenDates(year1, month1, day1, year2, month2, day2): 
    """Returns the number of days between year1/month1/day1 
     and year2/month2/day2. Assumes inputs are valid dates 
     in Gergorian calendar, and the first date is not after 
     the second.""" 
    num = 0 

    # YOUR CODE HERE! 
    yearx = year1 
    monthx = month1 
    dayx = day1 

    while ((year2 >= year1) and (month2 >= month1) and (day2 >= day1)) : 
     yearx,monthx,dayx = nextDay(yearx,monthx,dayx) 
     num = num + 1 
    num = '5' 
    return num 

print daysBetweenDates(2012,9,30,2012,10,30) 
+2

你的程序被關閉陷入無限循環。 –

+1

您不會更改'year2','month2',或'day2'或'year1','month1'或'day',所以您的while循環永遠不會終止。 – thegrinner

+0

'year2 <= 2012和month1 <= 9和day1 <= 30'然後它在某個月份1 = 10它應該停止。 –

回答

1

你需要改變行:

而((YEAR2> = YEAR1)和(MONTH2> = MONTH1)和(DAY2> = DAY1)):

到:

,而((YEAR2> = yearx)和(MONTH2> = monthx)和(DAY2> = dayx)):

,因爲你不改變你的代碼MONTH1的價值,但認爲的monthx。

另外,我覺得當dayx是greather是DAY2 while循環將打破,讓您的測量將於1

+0

非常感謝,我得到了我的錯誤,我不能upvote,因爲我有1分 –

+0

沒問題;)無限循環是鬼鬼祟祟的。 – junkaholik

+0

如果我們改變年份,這仍然會返回不正確的答案,請嘗試:'(2012,9,30,2013,11,30)' –

1

我從來沒有掌握在Python while語句,但我認爲這是你的無限循環,它始終是真實的DAY2>第1天等,所以該條件不再成立,因此你被卡住NUM增加

是什麼發生 - 你得到任何錯誤訊息?

如果我是這樣做我會設定功能,以確定

  1. 如果年是相同的
  2. 如果年相同,則計算出它們之間的天
  3. 如果多年不計算該特定年份的第一個日期和年底之間的天數
  4. 計算第二個日期的年初至第二個日期之間的天數
  5. 計算第一年年底和第二年年初歲之間的差異數量,並轉換到這天

這可能是笨重,但它應該讓你的家

+0

'year2 <= 2012和month1 <= 9和day1 <= 30'然後它在某個點month1 = 10它應該stop.Right?,我沒有得到任何錯誤。>>> >>> ======= ========================= RESTART ======================== ======== >>>'我得到這個 –

+0

非常感謝,我得到了我的錯誤,我不能upvote,因爲我有1分 –

+0

僅供參考,如果你有一個單一的空間在數字前面在列表中它會更好地格式化。 – thegrinner

0

這是我在短短一個功能的解決方案

def daysBetweenDates(year1, month1, day1, year2, month2, day2): 
## 
# Your code here. 
## 
a1=str(month1)+'/'+str(day1)+'/'+str(year1) 
date1 = datetime.strptime(a1, '%m/%d/%Y') 

a2=str(month2)+'/'+str(day2)+'/'+str(year2) 
date2 = datetime.strptime(a2, '%m/%d/%Y') 

result= (date2 - date1).days 
return result 
相關問題