鱼C论坛

 找回密码
 立即注册
查看: 1762|回复: 8

[已解决]第五课课后题 闰年问题 今天打印 又报错了 能正常编译 但是 输入2015 提示是闰年

[复制链接]
发表于 2018-1-7 10:44:34 | 显示全部楼层 |阅读模式

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

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

x
  1. temp = input("請輸入一個年份: ")
  2. while not temp.isdigit():
  3.     print("輸入錯誤,請重新輸入:")
  4.     break
  5. year = int(temp)
  6. if ((year%4 == int(year%4)) and (year%100 != int(year%100))) or (year%400 == int(year%400)):
  7.     print(str(year) + ("是閏年"))
  8. else:
  9.     print(str(year) + ("不是閏年"))
复制代码


第五课课后题 闰年问题  今天打印 又报错了 能正常编译 但是 输入2015 提示是闰年
然后我还想再加一个时间判断 就比如 让用户多输入几次  就这样 加个times = 5
最佳答案
2018-1-7 13:12:25
我觉得一定要写的思路清晰点比较好理解。
我分享一下我写的:

  1. while True:   #条件为真
  2.     year=int(input('请您输入年份:'))#只能输入一个整数,现在初学的话没必要考虑会不会不是整数,后面会有try异常处理,一步步来
  3.     if year==0:    #这里的意思是当用户输入0的时候程序就退出,或则就一直输入!
  4.         print('退出程序')
  5.         break
  6.     else:
  7.         if year %400==0 or (year%4==0 and year%100!=0): #这里就是判断闰年的两个方法,我用or和and连接起来很清晰
  8.             print(str(year)+'是闰年')#这里的str()是将用户输入的年份强行转换成字符串,然后使用+号拼接起来
  9.         else:
  10.             print(str(year)+'不是闰年')
复制代码
每行代码我基本上给你注释了,应该看得懂吧?应该满清晰的思路
如果你想加个次数的话也很简单这样改:
在代码最起码添加一个times变量来统计次数

  1. times=3
复制代码
我这里给他赋值了3,也就是用户只能输入3次。
然后还有把while的循环条件改成:

  1. while times>0:
复制代码
意思是当次数大于0的时候就执行循环体
最后还要在用户每次输入年份的后面添加一个

  1. times=times-1
复制代码
意思就是用户每输入一次就减一,直到times这个变量为0的时候就停止循环。

最后代码是这样的:
  1. times=3
  2. while times>0:   
  3.     year=int(input('请您输入年份:'))
  4.     times=times-1
  5.     if year==0:   
  6.         print('退出程序')
  7.         break
  8.     else:
  9.         if year %400==0 or (year%4==0 and year%100!=0):
  10.             print(str(year)+'是闰年')
  11.         else:
  12.             print(str(year)+'不是闰年')
复制代码
如果满意我的回答,请您记得给我个最佳答案,谢谢!~祝您学有所成!








小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-7 11:02:40 | 显示全部楼层
本帖最后由 MaXia0 于 2018-1-7 13:43 编辑
  1. temp = input("請輸入一個年份: ")
  2. times = 1
  3. while not temp.isdigit():
  4.     if times < 5:       #次数小于5,提示剩余次数,重新输入
  5.         print("輸入錯誤," + "剩余" + str(5 - times) + "次," + "請重新輸入:")
  6.         times += 1      #次数加一
  7.         temp = input()
  8.     else:               #超过5次,停止循环
  9.         print("超过5次,不能再输入!")
  10.         break
  11. else:
  12.     year = int(temp)
  13.     if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
  14.         print(str(year) + ("是閏年"))
  15.     else:
  16.         print(str(year) + ("不是閏年"))
复制代码

我也是小白,参考下, 稍微改进了下while循环,加了次数限制。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 12:14:44 | 显示全部楼层
条件过多,能用多几个if就多几个
  1. temp = input("請輸入一個年份: ")
  2. while not temp.isdigit():
  3.     print("輸入錯誤,請重新輸入:")
  4.     break
  5. year = int(temp)

  6. # 条件1、能整除4且不能整除100  条件2、能整除4, 能整除100, 又能整除400

  7. if year % 4 == 0: # 1和2: 能整除4
  8.     if year % 100 == 0: # 2: 能整除100
  9.         if year % 400 == 0: # 2: 能整除400
  10.             print(str(year) + ("是閏年"))
  11.         else:
  12.             print(str(year) + ("不是閏年"))
  13.     else: # 1: 不能整除100
  14.         print(str(year) + ("是閏年"))
  15. else:
  16.     print(str(year) + ("不是閏年"))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 13:12:25 | 显示全部楼层    本楼为最佳答案   
我觉得一定要写的思路清晰点比较好理解。
我分享一下我写的:

  1. while True:   #条件为真
  2.     year=int(input('请您输入年份:'))#只能输入一个整数,现在初学的话没必要考虑会不会不是整数,后面会有try异常处理,一步步来
  3.     if year==0:    #这里的意思是当用户输入0的时候程序就退出,或则就一直输入!
  4.         print('退出程序')
  5.         break
  6.     else:
  7.         if year %400==0 or (year%4==0 and year%100!=0): #这里就是判断闰年的两个方法,我用or和and连接起来很清晰
  8.             print(str(year)+'是闰年')#这里的str()是将用户输入的年份强行转换成字符串,然后使用+号拼接起来
  9.         else:
  10.             print(str(year)+'不是闰年')
复制代码
每行代码我基本上给你注释了,应该看得懂吧?应该满清晰的思路
如果你想加个次数的话也很简单这样改:
在代码最起码添加一个times变量来统计次数

  1. times=3
复制代码
我这里给他赋值了3,也就是用户只能输入3次。
然后还有把while的循环条件改成:

  1. while times>0:
复制代码
意思是当次数大于0的时候就执行循环体
最后还要在用户每次输入年份的后面添加一个

  1. times=times-1
复制代码
意思就是用户每输入一次就减一,直到times这个变量为0的时候就停止循环。

最后代码是这样的:
  1. times=3
  2. while times>0:   
  3.     year=int(input('请您输入年份:'))
  4.     times=times-1
  5.     if year==0:   
  6.         print('退出程序')
  7.         break
  8.     else:
  9.         if year %400==0 or (year%4==0 and year%100!=0):
  10.             print(str(year)+'是闰年')
  11.         else:
  12.             print(str(year)+'不是闰年')
复制代码
如果满意我的回答,请您记得给我个最佳答案,谢谢!~祝您学有所成!








小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-7 14:00:23 | 显示全部楼层
MaXia0 发表于 2018-1-7 11:02
我也是小白,参考下, 稍微改进了下while循环,加了次数限制。

嗯 挺好 还带注释的  谢谢啊  朋友  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 14:37:39 | 显示全部楼层
把% 全部换成  /
即可解决
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 19:35:47 | 显示全部楼层
兄弟我觉得你用错符号了,
if ((year%4 == int(year%4)) and (year%100 != int(year%100))) or (year%400 == int(year%400)):
就是这句,你要是会翻译的话,就能明白,这句主要是判断year能不能整除4跟400,而判断能不能整除的方法目前常用的有两种方法:
第一种是year/4==int(year/4),  是说让year除以4的得数等于对year除以4的得数取整数相不相等来判断是否能整除4,如果不能整除4,year除以4得数肯定是个带小数的数,那肯定不会等于int(year/4)这个整数。
第二种是用year%4==0,注意%是取余数的符号,也叫取模,如果year不能整除4那么肯定余数不等于0,如果余数是0说明year能整除4。
如果你能看明白再来看你的程序是不是豁然开朗,立马明白哪里出错了,对了就是符号用错了。
希望能帮到兄弟你,不细说了,先看电视去了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-7 22:12:43 | 显示全部楼层
本帖最后由 MaXia0 于 2018-1-7 22:14 编辑
屁哥 发表于 2018-1-7 14:00
嗯 挺好 还带注释的  谢谢啊  朋友

  1. temp = input("請輸入一個年份: ")
  2. times = 5
  3. while times:
  4.     if temp.isdigit():
  5.         year = int(temp)
  6.         if ((year % 4 == 0) and (year % 100 != 0)) or (year % 400 == 0):
  7.             print(year, "是閏年")
  8.         else:
  9.             print(year, "不是閏年")
  10.         break
  11.     else:
  12.         print("輸入錯誤," + "剩余", times, "次," + "請重新輸入:")
  13.         temp = input()
  14.     times -= 1
  15. print("输入错误超过5次!")
复制代码

改进了一下,感觉看起来更加简单明了了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-8 14:22:57 | 显示全部楼层
像番茄加两个蛋 发表于 2018-1-7 13:12
我觉得一定要写的思路清晰点比较好理解。
我分享一下我写的:
每行代码我基本上给你注释了,应该看得懂吧 ...

太谢谢 了 非常清晰  
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-5 12:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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