鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 9

[已解决]闰年输出结果不一致

[复制链接]
发表于 2020-8-29 16:51:41 | 显示全部楼层 |阅读模式

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

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

x
temp = input('请输入一个年份:')
year = int(temp)
while not temp.isdigit():
    temp = input('对不起,您的输入有误,请重新输入:')
while year:
    if year/400 == int(year/400):
        print ('这是闰年')
        temp = input('请输入一个年份:')
        year = int(temp)
    else:
        if year/4 == int(year/4) and year/100 != int(year/100):
            print ('这是闰年')
        else:
            print ('这不是闰年')
        temp = input('请输入一个年份:')
        year = int(temp)


Python 3.7.9 (tags/v3.7.9:13c94747c7, Aug 17 2020, 18:58:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
============================ RESTART: D:/桌面文件/算闰年.py ===========================
请输入一个年份:-20
对不起,您的输入有误,请重新输入:99
这是闰年
请输入一个年份:99
这不是闰年
请输入一个年份:


我想问一下为什么第一次输入了错误的数据,再次输入同样的年份得出的结果会不一致?
最佳答案
2020-8-29 17:04:59
因为你在第一次,“对不起,您的输入有误,请重新输入:99“时 只给temp赋值,并没有给year赋值,这时候year还是-20,不会等于99
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-29 16:55:09 | 显示全部楼层
temp = input('请输入一个年份:')
year = int(temp)
while not temp.isdigit():
    temp = input('对不起,您的输入有误,请重新输入:')
while year:
    if year%4==0 and year%100!=0 or year%400==0:
        print ('这是闰年')
    else:
        print ('这不是闰年')
    temp = input('请输入一个年份:')
    year = int(temp)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 17:02:05 | 显示全部楼层
temp = input('请输入一个年份:')
year = int(temp)
while not temp.isdigit():
    temp = input('对不起,您的输入有误,请重新输入:')
while year:
    if year/400 == int(year/400):
        print ('这是闰年')
        temp = input('请输入一个年份:')
        year = int(temp) 
    else:
        if year/4 == int(year/4) and year/100 != int(year/100):
            print ('这是闰年')
        else:
            print ('这不是闰年')
    temp = input('请输入一个年份:')
    year = int(temp)
还是缩进问题,最后两行往前缩进就好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 17:04:59 | 显示全部楼层    本楼为最佳答案   
因为你在第一次,“对不起,您的输入有误,请重新输入:99“时 只给temp赋值,并没有给year赋值,这时候year还是-20,不会等于99
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 17:05:58 | 显示全部楼层
疾风怪盗 发表于 2020-8-29 17:02
还是缩进问题,最后两行往前缩进就好了

我按照你说的改了一下,结果还是一样的呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-29 17:10:48 | 显示全部楼层
RobbyC 发表于 2020-8-29 17:05
我按照你说的改了一下,结果还是一样的呀?

那就是4楼说的那个问题了吧

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

使用道具 举报

发表于 2020-8-29 17:12:27 | 显示全部楼层
因为你的第一个year=int(temp) 写错地方了,应该写在第一个while之后
另外,在第二个while循环中的input直接放到ifelse外面就可以了,不必在if和else中各写一遍
以上这两处帮你修改了
此外判断整除最好使用求余的方式,例如:if year/400 == int(year/400): 可以写成 if year%400 == 0:  或者直接写 if not year%400:
这个不算错误,就没有帮你修改。
temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input('对不起,您的输入有误,请重新输入:')
year = int(temp)
while year:
    if year/400 == int(year/400):
        print ('这是闰年')
    else:
        if year/4 == int(year/4) and year/100 != int(year/100):
            print ('这是闰年')
        else:
            print ('这不是闰年')
    temp = input('请输入一个年份:')
    year = int(temp)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-29 17:13:34 | 显示全部楼层
学习型motor 发表于 2020-8-29 17:04
因为你在第一次,“对不起,您的输入有误,请重新输入:99“时 只给temp赋值,并没有给year赋值,这时候year ...

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

使用道具 举报

 楼主| 发表于 2020-8-29 17:14:19 | 显示全部楼层
疾风怪盗 发表于 2020-8-29 17:10
那就是4楼说的那个问题了吧

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

使用道具 举报

 楼主| 发表于 2020-8-29 17:17:02 | 显示全部楼层
sunrise085 发表于 2020-8-29 17:12
因为你的第一个year=int(temp) 写错地方了,应该写在第一个while之后
另外,在第二个while循环中的input直 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 03:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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