0

我期待一些数字作为上述代码的输出,但我没有把它弄出来。我是 python 新手,但开始使用 PHP 编码。对不起,如果我在哪里出错了。谢谢

# 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)
4

3 回答 3

1

我从来没有掌握 Python 中的 while 语句,但我认为这是你的无限循环,day2 > day1 等总是正确的。所以这个条件仍然正确,因此你被困在 num 增加

会发生什么 - 您是否收到任何错误消息?

如果我这样做,我会设置函数来确定

  1. 如果年份相同
  2. 如果年份相同,则计算它们之间的天数
  3. 如果年份不同,则计算该特定年份的第一个日期和年底之间的天数
  4. 计算第二个日期的年初到第二个日期之间的天数
  5. 计算第一年年底和第二年年初之间的年数差异,并将其转换为天数

它可能很笨重,但它应该能让你回家

于 2013-06-12T17:39:46.517 回答
1

您需要更改行:

而 ((year2 >= year1) 和 (month2 >= month1) 和 (day2 >= day1)) :

到:

而 ((year2 >= yearx) 和 (month2 >= monthx) 和 (day2 >= dayx)) :

因为您没有更改代码中month1 的值,而是更改了monthx 的值。

另外,我认为当第 2 天的第 x 天更大时,您的 while 循环会中断,因此您的测量值将偏离 1。

于 2013-06-12T17:48:22.877 回答
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
于 2016-05-31T22:21:01.527 回答