python - 查找闰年作业
问题描述
垃圾值被发送到函数而不是实际参数。我的代码有什么问题?
def find_leap_years(given_year):
i=0
count=0
while(count<15):
print(given_year)
if(given_year%4==0)and(given_year%400==0):
if(given_year%100!=0):
list_of_leap_years[i]=given_year
i+=1
count+=1
given_year+=1
return list_of_leap_years
list_of_leap_years=find_leap_years(2000)
print(list_of_leap_years)
解决方案
这里有几个重叠的错误,一个让另一个更难找到。
闰年测试有错误。应该是
if given_year % 4 == 0: if given_year % 100 != 0 or given_year % 400 == 0:
。也就是说,如果一年能被4整除,则为闰年;但如果它可以被 100 整除,则不是,除非它也可以被 400 整除。此错误的结果是您的原始if
-test 仅True
每 400 年一次,因此循环将运行直到它测试了 6,000 年。我怀疑你在这发生之前就中断了程序,所以你没有在if
-test 中看到问题。这行不通:
list_of_leap_years[i] = given_year
. 如果您的代码曾经达到这一点,您就会得到错误list assignment index out of range
。那是因为您不能简单地通过分配不存在的元素来扩展列表。如果要将新值添加到列表的末尾,请使用append
:list_of_leap_years.append(given_year)
。该函数返回
list_of_leap_years
但未定义它。该函数应首先将其创建为一个空列表。
修复这些问题,函数将如下所示:
def find_leap_years(given_year):
list_of_leap_years = []
count=0
while count < 15:
if given_year % 4 == 0:
if given_year % 100 != 0 or given_year % 400 == 0:
list_of_leap_years.append(given_year)
count += 1
given_year += 1
return list_of_leap_years
我删除了列表索引i
,因为您不需要它来跟踪闰年列表有多少元素。如果您需要发现它,请使用len(list_of_leap_years)
.
推荐阅读
- python - 连接字典中元组的三元组
- android - 后台服务中的 Google Vision API?
- python - 如何让 Spyder 在相关输出上显示?
- image - 从 2D 图像后端创建 3D 游览
- python - Google Cloud IoT 核心 JWT 过期居然是 24 小时?
- arrays - 嵌套对象中的 Logstash 嵌套对象
- acumos - Acumos 安装和 /var/lib/docker 大小
- gcc - version-script 可以只提供没有默认值的版本化符号吗?
- git - 我对分支中的本地文件进行了更改并进行了提交,但没有推送到原点。怎样才能找回原来的文件?
- video - 如何在颤动中将视频文件上传到服务器