鱼C论坛

 找回密码
 立即注册
查看: 1652|回复: 4

[已解决]005课课后题动动手1的数据类型判断

[复制链接]
发表于 2017-4-23 22:31:34 | 显示全部楼层 |阅读模式

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

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

x
数据类型判断的代码一直不太明白怎么用,今天写了一下,如下:
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. s = '请输入一个年份:'
  4. if not s.isdigit():
  5.     print('数据类型有误,' , end = '')
  6.     answer = input('请输入一个年份:')
  7.     s = '请输入一个年份:'
  8. year = int(answer)
  9. while year:
  10.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  11.         print('该年份为闰年。')
  12.         break
  13.     else:
  14.         print('该年份不是闰年。' , end = '')
  15.         answer = input('请重新输入:')
  16.         year = int(answer)        
  17. print('测试结束。')
复制代码


程序运行后,发现出现了这样的问题:
  1. 开始判断年份是否为闰年。请输入一个年份:er
  2. 数据类型有误,请输入一个年份:er
  3. Traceback (most recent call last):
  4.   File "C:\Users\yany\Desktop\闰年未解决.py", line 7, in <module>
  5.     year = int(answer)
  6. ValueError: invalid literal for int() with base 10: 'er'
复制代码


就是说只能判断一次,让我很费解,求大神解答。
最佳答案
2017-4-23 22:54:29
前面没有循环,只能判断一次,而且你一直判断的是s,而不是输入的数answer
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. s = '请输入一个年份:'
  4. while not answer.isdigit():
  5.         print('数据类型有误,' , end = '')
  6.         answer = input('请输入一个年份:')
  7.         s = '请输入一个年份:'
  8. year = int(answer)
  9. while year:
  10.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  11.         print('该年份为闰年。')
  12.         break
  13.     else:
  14.         print('该年份不是闰年。' , end = '')
  15.         answer = input('请重新输入:')
  16.         year = int(answer)        
  17. print('测试结束。')

  18.    
  19.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-23 22:53:58 | 显示全部楼层
前面没有循环,只能判断一次,而且你一直判断的是s,而不是输入的数answer
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. s = '请输入一个年份:'
  4. while not answer.isdigit():
  5.         print('数据类型有误,' , end = '')
  6.         answer = input('请输入一个年份:')
  7.         s = '请输入一个年份:'
  8. year = int(answer)
  9. while year:
  10.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  11.         print('该年份为闰年。')
  12.         break
  13.     else:
  14.         print('该年份不是闰年。' , end = '')
  15.         answer = input('请重新输入:')
  16.         year = int(answer)        
  17. print('测试结束。')

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

使用道具 举报

发表于 2017-4-23 22:54:29 | 显示全部楼层    本楼为最佳答案   
前面没有循环,只能判断一次,而且你一直判断的是s,而不是输入的数answer
  1. print('开始判断年份是否为闰年。' , end = '')
  2. answer = input('请输入一个年份:')
  3. s = '请输入一个年份:'
  4. while not answer.isdigit():
  5.         print('数据类型有误,' , end = '')
  6.         answer = input('请输入一个年份:')
  7.         s = '请输入一个年份:'
  8. year = int(answer)
  9. while year:
  10.     if (year % 100 != 0 and year % 4 == 0) or (year % 400 ==0):
  11.         print('该年份为闰年。')
  12.         break
  13.     else:
  14.         print('该年份不是闰年。' , end = '')
  15.         answer = input('请重新输入:')
  16.         year = int(answer)        
  17. print('测试结束。')

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

使用道具 举报

 楼主| 发表于 2017-4-24 12:33:53 | 显示全部楼层
小锟 发表于 2017-4-23 22:54
前面没有循环,只能判断一次,而且你一直判断的是s,而不是输入的数answer


但是answer的类型是字符串,不是数字
  1. >>> answer = input('请输入一个年份:')
  2. 请输入一个年份:
  3. >>> type(answer)
  4. <class 'str'>
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-24 12:40:07 | 显示全部楼层
小锟 发表于 2017-4-23 22:54
前面没有循环,只能判断一次,而且你一直判断的是s,而不是输入的数answer

明白了。answer在这里就是input的内容,所以应该判断answer的属性
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-16 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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