2

这是 udacity.com 网络开发课程,他们要求编写一个有效年份的程序,1900 年到 2020 年之间的任何时间都是有效年份......现在当我提交下面的代码时,它给出了这个错误:

“不正确。您的提交没有为输入 '1920' 返回正确的结果。您的提交通过了 9 个测试用例中的 7 个。”

我的功能:

def valid_year(year):
  if year and year.isdigit():
    if int(year) >=1900 and int(year) <=2020:
      return year

print valid_year('1970')

为什么它不适用于 1920 年?udacity 的相同功能运行良好....有人请告诉我这两个代码有什么区别

Udacity 功能:

def valid_year(year):
  if year and year.isdigit():
    year = int(year)
    if year >=1900 and year <=2020:
      return year

print valid_year('1970')
4

1 回答 1

4

您需要返回一个int,因为 udacity 的函数返回一个整数:

def valid_year(year):
  if year and year.isdigit():
    if int(year) >=1900 and int(year) <=2020:
      return year

def valid_year_uda(year):
  if year and year.isdigit():
    year = int(year)
    if year >=1900 and year <=2020:
      return year

print valid_year('1970') == valid_year_uda('1970')
print type(valid_year('1970')), type(valid_year_uda('1970'))

输出:

False
<type 'str'> <type 'int'>

这可以很容易地修复,只需替换return yearreturn int(year)

def valid_year(year):
  if year and year.isdigit():
    if int(year) >=1900 and int(year) <=2020:
      return int(year)  #return an integer

print valid_year('1970')
于 2013-05-27T16:29:10.473 回答