鱼C论坛

 找回密码
 立即注册
查看: 3762|回复: 12

[已解决]关于循环判断是否是闰年的变量定义

[复制链接]
发表于 2016-9-6 21:44:53 | 显示全部楼层 |阅读模式
4鱼币
零基础第5课有一个是写出判断是否是闰年的代码,我这边写了个循环判断,如果不是闰年,则循环,如果是,则结束的代码,其中有个变量d(具体见图片代码贴图),之前我没有设置d=0,运行时,系统中提示'd'没有定义。后来我就设置为d=0,这样程序就能顺利运转了。想请教下,我这种解决办法是否可行?目前来看是可以保证程序运行,但是想了解下,这样操作,在后面编写复杂代码时,会不会产生bug,这是否是正确的解决办法?
最佳答案
2016-9-6 21:44:54
可以不在while的开始判断,这样就无需变量d了。另外不是闰年后重新输入没有再做有效性判断。
切记:发帖提问要贴上程序的代码,而不是截图。
  1. while True:
  2.     a = input('请输入年份:')
  3.     if a.isdigit():
  4.         break
  5.     print('您输入的类型错误,请重新输入')
  6. b = int(a)
  7. while True:
  8.     if (b % 4 == 0) and (b % 100 != 0) or (b % 400 == 0):
  9.         print('闰年')
  10.         break
  11.     print('不是闰年')
  12.     while True:
  13.         a = input('请输入年份:')
  14.         if a.isdigit():
  15.             break
  16.         print('您输入的类型错误,请重新输入')
  17.     b = int(a)
  18. print('游戏结束')
复制代码
闰年循环变量设定.jpg
闰年运作结果.jpg

最佳答案

查看完整内容

可以不在while的开始判断,这样就无需变量d了。另外不是闰年后重新输入没有再做有效性判断。 切记:发帖提问要贴上程序的代码,而不是截图。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-6 21:44:54 | 显示全部楼层    本楼为最佳答案   
可以不在while的开始判断,这样就无需变量d了。另外不是闰年后重新输入没有再做有效性判断。
切记:发帖提问要贴上程序的代码,而不是截图。
  1. while True:
  2.     a = input('请输入年份:')
  3.     if a.isdigit():
  4.         break
  5.     print('您输入的类型错误,请重新输入')
  6. b = int(a)
  7. while True:
  8.     if (b % 4 == 0) and (b % 100 != 0) or (b % 400 == 0):
  9.         print('闰年')
  10.         break
  11.     print('不是闰年')
  12.     while True:
  13.         a = input('请输入年份:')
  14.         if a.isdigit():
  15.             break
  16.         print('您输入的类型错误,请重新输入')
  17.     b = int(a)
  18. print('游戏结束')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-9 14:41:02 | 显示全部楼层
那样解决是正确的,在我看来。理由如下:
你的程序中,在执行while循环的时候,判断条件为d==c,此时后台就会找d是啥,c是啥,结果发现c='闰年'了,但是d没有找到,所以就会报错,提示你d没有被定义。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-11 15:42:44 | 显示全部楼层
看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-11 16:19:59 | 显示全部楼层
我不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-12 14:45:29 | 显示全部楼层
jj
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-12 14:46:03 | 显示全部楼层
,,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-14 14:01:20 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-9-14 14:09:20 | 显示全部楼层
没有问题,不过没必要写这么复杂。

你这里的退出条件是看d这个变量的值是不是闰年,其实你里面已经判断好了,只是赋值给d而已,
可以在if 这里 知道是闰年后直接break退出循环,而while True,作为条件即可
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-10-21 19:49:12 | 显示全部楼层
没有什么问题,开始赋值变量D只是为了进入while循环,下面的变量会被覆盖。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-15 12:24:48 | 显示全部楼层
本来懂得,看完问题后,马上不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-15 12:27:13 | 显示全部楼层
这代码逻辑很乱
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-11-21 17:10:46 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-22 15:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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