如何解决如何在Python中制作if语句
我正在尝试编写一个以整数秒为输入并以n年,n天,n小时,n分钟和n秒为单位返回的程序(每个n可能不同)
但是由于某种原因,它不会出现在第二个if语句中。我已经将print(“ x”)放在if语句中进行测试,但是程序只打印出一个“ x”,它位于第一个if语句中,而没有打印出其他“ x”。
我一直试图弄清楚为什么这样做,但是我似乎做不到。我也在互联网上查找了一些东西,这样我就不会打扰某个人,因为这个问题的答案很简单,但是我什么也找不到。
这是我的代码:
def format_duration(seconds):
decimal_list = []
second_decimal = seconds % 60
seconds -= second_decimal
seconds /= 60
decimal_list.append(int(second_decimal))
if seconds >= 60:
minute_decimal = seconds % 60
seconds -= minute_decimal
seconds /= 60
decimal_list.append(int(minute_decimal))
print("x")
if minute_decimal > 1:
minute_txt = "minutes"
else:
minute_txt = "minute"
if seconds >= 3600:
hour_decimal = seconds % 24
seconds -= hour_decimal
seconds /= 24
decimal_list.append(int(hour_decimal))
print("x")
if hour_decimal > 1:
hour_txt = "hours"
else:
hour_txt = "hour"
if seconds >= 86400:
day_decimal = seconds % 365
seconds -= day_decimal
seconds /= 365
decimal_list.append(int(day_decimal))
print("x")
if day_decimal > 1:
day_txt = "days"
else:
day_txt = "day"
if seconds >= 31536000:
year_decimal = seconds
decimal_list.append(int(year_decimal))
print("x")
if year_decimal > 1:
year_txt = "years"
else:
year_txt = "year"
for i in range(len(decimal_list)):
if decimal_list[i] == 0:
decimal_list.remove(decimal_list[i])
print(decimal_list)
format_duration(2354678)
解决方法
我在您的代码中添加了一些简单的跟踪:
if seconds >= 60:
print("TRACE seconds > 60",seconds)
minute_decimal = seconds % 60
seconds -= minute_decimal
seconds /= 60
decimal_list.append(int(minute_decimal))
if minute_decimal > 1:
minute_txt = "minutes"
else:
minute_txt = "minute"
print("TRACE minutes were coverted",minute_decimal,seconds)
if seconds >= 3600:
print("TRACE seconds > 3600",seconds)
输出:
TRACE seconds > 60
39244.0
TRACE minutes were coverted 4.0 654.0
[38,4]
您的习惯问题是,在整个程序中,您使用名称seconds
来调用不同值的 lot ;我认为您已经混淆了他们。最值得注意的是,线
minute_decimal = seconds % 60
seconds -= minute_decimal
seconds /= 60
从完整值中提取亚分钟秒数,将其分配给变量minute_decimal
,然后将余数转换为分钟...然后您继续调用seconds
并进行测试这样。
您编写了很多代码,而没有对其进行大量测试。放入一些有用的print
语句,在编写时跟踪每个部分,在调试完该部分之前不要继续。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。