如何在python中比较字符串和整数?

Cod*_*lue 10 python comparison

我有这个简单的python程序.我跑了它打印yes,实际上我希望它不打印任何东西因为14不大于14.

我看到了这个相关的问题,但它没有多大帮助.

#! /usr/bin/python

import sys

hours = "14"

if (hours > 14):
        print "yes"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

unu*_*tbu 28

将字符串转换为整数int:

hours = int("14")

if (hours > 14):
        print "yes"
Run Code Online (Sandbox Code Playgroud)

在CPython2中,当比较两个不同类型的非数字对象时,通过比较类型的名称来执行比较.因为'int' < 'string',任何int都小于任何字符串.

In [79]: "14" > 14
Out[79]: True

In [80]: 14 > 14
Out[80]: False
Run Code Online (Sandbox Code Playgroud)

这是一个经典的Python陷阱.在Python3中,这个疣已被纠正 - 比较不同类型的非数字对象默认引发TypeError.

正如文档中解释的那样:

CPython实现细节:除了数字之外的不同类型的对象按其类型名称排序; 不支持正确比较的相同类型的对象按其地址排序.