鱼C论坛

 找回密码
 立即注册
查看: 1517|回复: 9

[已解决]判断输入类型时报错

[复制链接]
发表于 2019-8-17 15:46:44 | 显示全部楼层 |阅读模式

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

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

x
# -*- coding: cp936 -*-
print("--------判断是否是闰年---------")
temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input('请重新输入一个年份:')
year = int(temp)

if year/400 == int (year/400):
    print(temp + '是闰年')
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + '是闰年')
    else:
        print(temp + '不是闰年')

代码如上,运行后会报错,请大家帮我看看。

报错:
请输入一个年份:2000

Traceback (most recent call last):
  File "E:/python/p6/p6_test1.py", line 4, in <module>
    while not temp.isdigit():
AttributeError: 'int' object has no attribute 'isdigit'
最佳答案
2019-8-17 15:59:41
      楼主使用的是 Python 2.7?

      用 raw_input() 代替 input() 就可以解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-8-17 15:59:41 | 显示全部楼层    本楼为最佳答案   
      楼主使用的是 Python 2.7?

      用 raw_input() 代替 input() 就可以解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 16:04:09 | 显示全部楼层
这样应该可以解决问题:

  1. # -*- coding: cp936 -*-
  2. print("--------判断是否是闰年---------")
  3. temp = input('请输入一个年份:')
  4. while not isinstance(temp, int):
  5.     temp = input('请重新输入一个年份:')
  6. year = int(temp)

  7. if year/400 == int (year/400):
  8.     print(temp + '是闰年')
  9. else:
  10.     if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  11.         print(temp + '是闰年')
  12.     else:
  13.         print(temp + '不是闰年')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-17 16:05:03 | 显示全部楼层
jackz007 发表于 2019-8-17 15:59
楼主使用的是 Python 2.7?

      用 raw_input() 代替 input() 就可以解决问题

改成raw_input()确实就可以了
可是我使用的是python3.7

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

使用道具 举报

发表于 2019-8-17 16:06:22 | 显示全部楼层
russwest44 发表于 2019-8-17 16:05
改成raw_input()确实就可以了
可是我使用的是python3.7

Python 3.7 没有 raw_input() 函数!楼主是不是弄错了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 16:08:25 | 显示全部楼层
       Python 3.7 的 input() 函数返回的数据类型一定是 str,不可能是 int。你现在就是因为 input() 返回了 int 类型的结果才出的错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-17 16:09:59 | 显示全部楼层
file:///C:/Users/Administrator/Desktop/$E0W%60ZW93%25%5D0VTXW~EAW_SF.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-17 16:11:27 | 显示全部楼层
jackz007 发表于 2019-8-17 16:08
Python 3.7 的 input() 函数返回的数据类型一定是 str,不可能是 int。你现在就是因为 input() 返回 ...

我发不了图片
可我的python真的是3.7的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-17 16:17:24 | 显示全部楼层
zltzlt 发表于 2019-8-17 16:06
Python 3.7 没有 raw_input() 函数!楼主是不是弄错了?

没弄错,python肯定装最新的3.7
我也觉得很奇怪
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-8-17 16:20:38 | 显示全部楼层
好吧,是我的错。
电脑里装了两个版本的python
刚刚用的是2.7的shell
抱歉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-25 03:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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