鱼C论坛

 找回密码
 立即注册
查看: 2547|回复: 11

[已解决]第一版005讲的一个课后作业(

[复制链接]
发表于 2020-2-13 11:34:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
s = input('请输入一个年份:')
while not s.isdigit():
    print('抱歉,您的输入有误,请输入一个整数:')


year = int(s)
if year/400 ==int(year/400):
    print(s + '是闰年')
else:
    if(year/4 ==int(year/4)) and (year/100 !=int(year/100)):
        print(s+ '是闰年')
    else:
            print(s + '不是闰年')

最后这个else为什么和上一个if是同一个缩进?为什么第一个if year/400 ==int(year/400):
    print(s + '是闰年') 后面不需要跟上如果不是的话print不是闰年?或者说最后这个else是包括前两个if的,那么为什么不应该跟第一个if是同一个缩进呢

就是if else的缩进有点不明白,有人告诉我用elif,但是还没学到elif,想按这个思考。。。

总结就是这个else的运行条件,它的位置有点不明白
最佳答案
2020-2-13 13:17:02
本帖最后由 Judie 于 2020-2-13 00:18 编辑

来 给你解释的明明白白
#1. 写一个程序,判断给定年份是否为闰年。
#这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。

temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400): #if1 如果能被400整数 【/ 除】【int() 整型/整数】
    print(temp + ' 是闰年!')
else: #else1对着if1 即 如果不能被400整除
    if (year/4 == int(year/4)) and (year/100 != int(year/100)): #if2 如果能被4整除 并且 不能被100整除 
        print(temp + ' 是闰年!') #else1 + if2 不被400整除 被4整除 不被100整除 -》 打印 是闰年
    else: #else2 对着if2 不能被4整数 或者 能被100 整除 即 不能满足(能被4整除但又不被100整除)
        print(temp + ' 不是闰年!') #else1 + else2 不能被400整除 但又不满足(能被4整数但不被100整除)-》打印不是闰年
截屏2020-02-13上午11.25.40.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-13 11:36:56 From FishC Mobile | 显示全部楼层
/  代表的是浮点除法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 11:40:36 | 显示全部楼层
wp231957 发表于 2020-2-13 11:36
/  代表的是浮点除法

为什么最后一个else明明是两个条件都不符合才输出,却只跟第二个if缩进?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 11:42:57 | 显示全部楼层
为什么最后一个else明明是两个条件都不符合才输出,却只跟第二个if缩进?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 11:58:00 From FishC Mobile | 显示全部楼层
JocelynYang 发表于 2020-2-13 11:40
为什么最后一个else明明是两个条件都不符合才输出,却只跟第二个if缩进?

不明白啥是浮点数吗,浮点数不存在==的比较
所以你的代码从头到尾都是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 12:00:17 | 显示全部楼层
wp231957 发表于 2020-2-13 11:58
不明白啥是浮点数吗,浮点数不存在==的比较
所以你的代码从头到尾都是错的

可。。。这个代码是小甲鱼作业里的答案,运行也没有问题啊。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 12:03:52 From FishC Mobile | 显示全部楼层
JocelynYang 发表于 2020-2-13 12:00
可。。。这个代码是小甲鱼作业里的答案,运行也没有问题啊。。。

判断闰年,一般都用取模运算
比如,要判断3是不是奇数,只要看3%2是否等于1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 12:38:36 | 显示全部楼层
你的逻辑思路说实话完全没有跟着代码走才会不理解吧。。。
第一个else就已经是如果year不能被400整除的话就执行else下面的判断,那么else下面的if同一缩进的else在逻辑上就已经等同于两个if条件都不满足的情况下所执行的代码了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-2-13 13:17:02 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Judie 于 2020-2-13 00:18 编辑

来 给你解释的明明白白
#1. 写一个程序,判断给定年份是否为闰年。
#这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。

temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400): #if1 如果能被400整数 【/ 除】【int() 整型/整数】
    print(temp + ' 是闰年!')
else: #else1对着if1 即 如果不能被400整除
    if (year/4 == int(year/4)) and (year/100 != int(year/100)): #if2 如果能被4整除 并且 不能被100整除 
        print(temp + ' 是闰年!') #else1 + if2 不被400整除 被4整除 不被100整除 -》 打印 是闰年
    else: #else2 对着if2 不能被4整数 或者 能被100 整除 即 不能满足(能被4整除但又不被100整除)
        print(temp + ' 不是闰年!') #else1 + else2 不能被400整除 但又不满足(能被4整数但不被100整除)-》打印不是闰年
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 17:58:17 | 显示全部楼层
Judie 发表于 2020-2-13 13:17
来 给你解释的明明白白

感谢大佬 因为是新手所以感觉很多东西无法理解。。。这下看明白了!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 18:06:27 | 显示全部楼层
Hoiste 发表于 2020-2-13 12:38
你的逻辑思路说实话完全没有跟着代码走才会不理解吧。。。
第一个else就已经是如果year不能被400整除的话 ...

感谢感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 20:48:21 From FishC Mobile | 显示全部楼层
JocelynYang 发表于 2020-2-13 04:58
感谢大佬 因为是新手所以感觉很多东西无法理解。。。这下看明白了!!

哈啊哈 不用谢不用谢
也谢谢你的最佳答案嗷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 23:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表