-2

我试图从 python 中的 c 复制 strcmp。我输入了前一个程序并且它工作但后者似乎也工作?请解释后一个。我只希望 == 工作但 >,< 似乎工作。 python如何知道 <,> 我的意思是字符串的长度而不使用 len()

def strcmp(str1,str2):
    if(len(str1) == len(str2)):
     return 0
    if(len(str1) > len(str2)):
     return 1
    if(len(str1) < len(str2)):
     return -1
print strcmp("ashsih","aapam")

对比

def strcmp(str1,str2):
    if(str1 == str2):
     return 0
    if(str1 > str2):
     return 1
    if(str1 < str2):
     return -1
print strcmp("ashsih","aapam")
4

2 回答 2

4

<,>对于字符串操作数,比较的是词汇顺序,而不是它们的长度。

>>> 'a' < 'b'
True
>>> 'a' > 'b'
False

>>> 'cat' > 'banana'
True
>>> 'cat' < 'banana'
False

大写字符小于其小写版本。

>>> 'A' < 'a'
True
>>> 'A' > 'a'
False

因此,您的代码会进行区分大小写的比较。


您可以str.casefold用于不区分大小写的比较,(仅限 Python 3.3+)。

>>> 'A'.casefold()
'a'
>>> 'A'.casefold() == 'a'.casefold()
True
于 2013-08-17T15:00:41.943 回答
2

前一个只是比较两个字符串的长度。但后一个试图找出哪个更大。例如:

A = "abcdef"
B = "b"

len(A) > len(B) 为真,但 B > A 为真,因为“b”>“a”(即 A 的第一个字母)

于 2013-08-17T15:02:56.893 回答