python中的有效年份函数

min*_*bro 3 python

这是 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')
Run Code Online (Sandbox Code Playgroud)

为什么1920年不起作用?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')
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 5

您需要返回一个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'))
Run Code Online (Sandbox Code Playgroud)

输出:

False
<type 'str'> <type 'int'>
Run Code Online (Sandbox Code Playgroud)

这可以轻松修复,只需替换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')
Run Code Online (Sandbox Code Playgroud)