如何解决简单返回值不起作用python3
我正在尝试测试一个简单的函数以获取给定日期的一周中的特定日期,但是每次我输入参数时,返回值都会一直消失。如下所示,代码尚不完整,但是我使用了一个非常特定的日期(1900年1月3日)来获得所需的输出:实际上,这是该特定日期的工作日。
def isYearLeap(year):
return year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)
def dayOfYear(year,month,day):
century = int(str(year)[:2])
if century in [15,19,23]:
century_code = 3
elif century in [16,20,24]:
century_code = 2
elif century in [17,21,25]:
century_code = 0
elif century in [18,22,26]:
century_code = 5
yr = year % 100
b = yr // 12
c = yr % 12
d = c // 4
sum = century_code + yr + b + c + d
if sum >= 7:
while sum >= 7:
sum -= 7
days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
if sum in [0,1,2,3,4,5,6,7]:
for day in range(0,8):
if sum == day:
**year_dday = days[day]**
if month == 1 and isYearLeap(year) == False:
if day in [3,10,17,24,31]:
**return year_dday**
print(dayOfYear(1900,3))
Visualization of the code and "Return value: None"
解决方法
def isYearLeap(year):
return year % 4 == 0 and (year % 400 == 0 or year % 100 != 0)
def dayOfYear(year,month,day):
century = int(str(year)[:2])
if century in [15,19,23]:
century_code = 3
elif century in [16,20,24]:
century_code = 2
elif century in [17,21,25]:
century_code = 0
elif century in [18,22,26]:
century_code = 5
yr = year % 100
b = yr // 12
c = yr % 12
d = c // 4
sum = century_code + yr + b + c + d
if sum >= 7:
while sum >= 7:
sum -= 7
days = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]
if sum in [0,1,2,3,4,5,6,7]:
for day in range(0,8):
if sum == day:
year_dday = days[day]
if month == 1 and isYearLeap(year) == False:
if day in [3,10,17,24,31]:
return year_dday
print(dayOfYear(1900,3))
,
在您的示例day=7
中,因此代码从不运行return语句。您应该确定在这种情况下要返回的内容,并在函数末尾实现它。
请注意,对于此任务,datetime
模块可能会做得更好。看到这里:How do I get the day of week given a date?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。