Python:unorderable types: str() > int()

Python:unorderable types: str() > int()

标签:python

by 小威威


1.问题描述

#!/usr/bin/env python3
name = input('please enter your name: ')
print('hello,', name)
a = input('请输入a的值')
if a > 10 :
    print(a)
else :
    print(-a)

今天在运行该代码的时候,python解释器(类似于C语言的编译器)报错,错误信息如下:

Traceback (most recent call last):
File “if-else.py”, line 5, in
if a > 10 :
TypeError: unorderable types: str() > int()

首先来解释一下错误信息:
1.Traceback指追踪,即python的解释器使用Traceback追踪异常,出现Traceback说明你的程序出错了;
2.接下来的一行表明文件名,位置;
3.再接下来显示出错语句;
4.最后一行显示错误的原因。

最后一句中,unorderable types: str() > int()指类型不匹配,即a变量与10的类型不匹配。可是,我输入的a是整数,怎么会出现这种情况呢?

原来,在python3中,input函数返回的是字符串,即你输入字符串,他就输出字符串,你输入数字,他还是输出字符串,那么在执行接下来的操作时就可能出现类型不匹配的情况。所以出现了字符串与数字比较的情况。

2.解决方案

既然input函数的返回值是字符串,我们不妨将字符串强制性转化成整型,这样就不会出现类型不匹配的情况了。

正确代码如下:

#!/usr/bin/env python3
name = input('please enter your name: ')
print('hello,', name)
a = int(input('请输入a的值'))
if a > 10 :
    print(a)
else :
    print(-a)
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值