2013-08-17 162 views
-2

我试图从python中复制strcmp从c中输入前一个程序,它的工作,但后者似乎也工作?请解释后一个。我只希望==工作但是>,<似乎wokrk.How确实蟒蛇知道通过<,>我的意思是字符串的长度,而无需使用LEN()在python中进行字符串比较

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") 

VS

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

回答

4

<>字符串操作数比较lexicogrphi cal命令,而不是它们的长度。

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

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

大写字符比小写字母小。

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

因此,您的代码会区分大小写。


可以使用str.casefold不区分大小写comparsison,(Python的3.3+只)。

>>> 'A'.casefold() 
'a' 
>>> 'A'.casefold() == 'a'.casefold() 
True 
2

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

A = "abcdef" 
B = "b" 

LEN(A)> LEN(B)为真 但是B> A将是正确的,因为 “B”> “一”(其为A的第一个字母)