1.问题描述
1 age=input('please enter your age') 2 if age >=18: 3 print('your age is',age) 4 print('adult') 5 elif age>=6: 6 print('teenager') 7 else: 8 print('kid')
今天在运行该代码的时候,python解释器报错,错误信息如下:
F:python>python3 elif.py
please enter your age5
Traceback (most recent call last):
File "elif.py", line 2, in <module>
if age >=18:
TypeError: unorderable types: str() >= int()
解释一下错误信息:
1.Traceback指追踪,即python的解释器使用Traceback追踪异常,出现Traceback说明你的程序出错了;
2.接下来的一行表明文件名,位置;
3.再接下来显示出错语句;
4.最后一行显示错误的原因。
unorderable types: str() > int()指类型不匹配,即age变量与18的类型不匹配。可是,我输入的age是整数,为什么会出现这种情况呢?
原因是,在python3中,input函数返回的是字符串,即你输入字符串,他就输出字符串,你输入数字,他还是输出字符串,那么在执行接下来的操作时就可能出现类型不匹配的情况。
所以出现了字符串与数字比较的情况。
2.解决方法
既然input函数的返回值是字符串,我们不妨将字符串强制性转化成整型,这样就不会出现类型不匹配的情况了。
正确代码如下:
1 age=int(input('please enter your age')) 2 if age >=18: 3 print('your age is',age) 4 print('adult') 5 elif age>=6: 6 print('teenager') 7 else: 8 print('kid')
运行结果:
F:python>python3 elif.py
please enter your age25
your age is 25
adult