鱼C论坛

 找回密码
 立即注册
查看: 2565|回复: 10

[已解决]005课后题动动手1

[复制链接]
发表于 2017-4-21 13:16:21 | 显示全部楼层 |阅读模式

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

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

x
我写的代码是
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. year = int(answer)
  4. if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  5.     print('该年份为闰年。')
  6. else:
  7.     while (year % 100 != 0 and year % 4 != 0) or (year % 400 !=0):
  8.         print('该年份不是闰年。' , end = '')
  9.         answer = input('请重新输入:')
  10.         year = int(answer)
  11. print('测试结束。')
复制代码

现在有个小问题:就是第一次判不是闰年,第二次判断是闰年后,不显示“该年份为闰年。”(结果如下图)这是为什么?
  1. 开始判断年份是否为闰年。1请输入一个年份:10001
  2. 该年份不是闰年。请重新输入:10000
  3. 测试结束。
复制代码
最佳答案
2017-4-21 13:31:24
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. year = int(answer)
  4. while True:
  5.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  6.         print('该年份为闰年。')
  7.         break
  8.     else:
  9.             print('该年份不是闰年。' , end = '')
  10.             answer = input('请重新输入:')
  11.             year = int(answer)
  12. print('测试结束。')
复制代码

你的代码,while:那一句,是在else里面的,当你第二次输入是闰年的时候,不会先判断if语句的内容,而是先判断while的语句是否成立,不成了,继续执行下一条语句print('测试结束')
你的代码还可以改成这样:
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. year = int(answer)
  4. if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  5.     print('该年份为闰年。')
  6. else:
  7.     while (year % 100 != 0 and year % 4 != 0) or (year % 400 !=0):
  8.         print('该年份不是闰年。' , end = '')
  9.         answer = input('请重新输入:')
  10.         year = int(answer)
  11.     else:
  12.         print('该年份为闰年。')
  13. print('测试结束。')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-4-21 13:31:24 | 显示全部楼层    本楼为最佳答案   
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. year = int(answer)
  4. while True:
  5.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  6.         print('该年份为闰年。')
  7.         break
  8.     else:
  9.             print('该年份不是闰年。' , end = '')
  10.             answer = input('请重新输入:')
  11.             year = int(answer)
  12. print('测试结束。')
复制代码

你的代码,while:那一句,是在else里面的,当你第二次输入是闰年的时候,不会先判断if语句的内容,而是先判断while的语句是否成立,不成了,继续执行下一条语句print('测试结束')
你的代码还可以改成这样:
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. year = int(answer)
  4. if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  5.     print('该年份为闰年。')
  6. else:
  7.     while (year % 100 != 0 and year % 4 != 0) or (year % 400 !=0):
  8.         print('该年份不是闰年。' , end = '')
  9.         answer = input('请重新输入:')
  10.         year = int(answer)
  11.     else:
  12.         print('该年份为闰年。')
  13. print('测试结束。')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-21 13:42:19 | 显示全部楼层
ButcherRabbit 发表于 2017-4-21 13:31
你的代码,while:那一句,是在else里面的,当你第二次输入是闰年的时候,不会先判断if语句的内容,而是 ...

可是我觉得在我的代码中,while循环下不是还有一个重新输入的过程吗?为什么不是重新输入后先判断if条件呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-21 13:49:16 | 显示全部楼层
pejayang 发表于 2017-4-21 13:42
可是我觉得在我的代码中,while循环下不是还有一个重新输入的过程吗?为什么不是重新输入后先判断if条件 ...

while的判断条件要放在内部
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-21 13:56:35 | 显示全部楼层
gopythoner 发表于 2017-4-21 13:49
while的判断条件要放在内部

嗯,我刚才看了看也想明白了。谢啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-21 13:57:37 | 显示全部楼层
ButcherRabbit 发表于 2017-4-21 13:31
你的代码,while:那一句,是在else里面的,当你第二次输入是闰年的时候,不会先判断if语句的内容,而是 ...

我刚才自己也想明白了,谢啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-21 16:52:42 | 显示全部楼层
对于你的脚本在第二次判断是闰年,但是没有任何提示就结束了:
      并不代表脚本告诉你,你输入的是闰年,而是无法判断,因为你没给出相应的判条件
而且
     既然第一段已经给出判断是否是闰年的的条件,else代表否则,在本脚本中结果只有 是或不是。那后面只需要输出不是闰年即可,不需要再次给出条件来判断。

新人看法,如有错误,请大佬指明    (^_^)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-21 16:59:01 | 显示全部楼层
py-小白 发表于 2017-4-21 16:52
对于你的脚本在第二次判断是闰年,但是没有任何提示就结束了:
      并不代表脚本告诉你,你输入的是闰年 ...

因为你只循环不是闰年的条件 而   是闰年的条件被忽略,它只在你第一次输入被条件正确匹配的值后才触发,到后面就没用了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-21 17:02:35 | 显示全部楼层
pejayang 发表于 2017-4-21 13:42
可是我觉得在我的代码中,while循环下不是还有一个重新输入的过程吗?为什么不是重新输入后先判断if条件 ...

你的那个if相当于一次性杯子,因为你没有赋予它再生的属性,只有你第一次输入的值是闰年,它才有意义
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-27 14:57:21 | 显示全部楼层
本帖最后由 阿朵该 于 2018-5-27 15:01 编辑

你好,例如我输入2018 以后提示不是闰年,接下来输入2012也提示不是闰年,我一直不理解就是2012%4==0,应该直接跳到else里面提示是闰年,为什么会显示不是闰年
PK~1M)[9G6H~6YLDB`9YC(B.png
7QT)3J0)JEJY4U71B}T4R5B.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-27 15:03:11 | 显示全部楼层
阿朵该 发表于 2018-5-27 14:57
你好,例如我输入2018 以后提示不是闰年,接下来输入2012也提示不是闰年,我一直不理解就是2012%4==0,应该 ...

第一次输入不是闰年,第二次输入是闰年但是 python显示不是闰年,求大佬帮我理一下思路!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-27 01:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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