RobbyC 发表于 2020-8-29 16:51:41

闰年输出结果不一致

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) on win32
Type "help", "copyright", "credits" or "license()" for more information.
>>>
============================ RESTART: D:/桌面文件/算闰年.py ===========================
请输入一个年份:-20
对不起,您的输入有误,请重新输入:99
这是闰年
请输入一个年份:99
这不是闰年
请输入一个年份:


我想问一下为什么第一次输入了错误的数据,再次输入同样的年份得出的结果会不一致?

baige 发表于 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)

疾风怪盗 发表于 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)
还是缩进问题,最后两行往前缩进就好了

学习型motor 发表于 2020-8-29 17:04:59

因为你在第一次,“对不起,您的输入有误,请重新输入:99“时 只给temp赋值,并没有给year赋值,这时候year还是-20,不会等于99

RobbyC 发表于 2020-8-29 17:05:58

疾风怪盗 发表于 2020-8-29 17:02
还是缩进问题,最后两行往前缩进就好了

我按照你说的改了一下,结果还是一样的呀?{:9_241:}

疾风怪盗 发表于 2020-8-29 17:10:48

RobbyC 发表于 2020-8-29 17:05
我按照你说的改了一下,结果还是一样的呀?

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

sunrise085 发表于 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)

RobbyC 发表于 2020-8-29 17:13:34

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

啊!懂了,谢谢!

RobbyC 发表于 2020-8-29 17:14:19

疾风怪盗 发表于 2020-8-29 17:10
那就是4楼说的那个问题了吧

感谢!

RobbyC 发表于 2020-8-29 17:17:02

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

谢谢,我知道了!
页: [1]
查看完整版本: 闰年输出结果不一致