为了账号安全,请及时绑定邮箱和手机立即绑定

排序可否用ASCII码判断?请问这段代码问题是什么?

def cmp_ignore_case(s1, s2):
    if 's1'<97:
        S1=s1+32
    if 's2'<97:
        S2=s2+32
    if S1<S2:
        return -1
    if S1>S2:
        return 1
    return 0    
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)


正在回答

2 回答

def cmp_ignore_case(s1,s2):
    S1=''
    S2=''
    for x in s1:
        if ord(x)<97: #ord():将一个字符转换为它的整数值
            S1=S1+unichr(ord(x)+32)#unichr()将一个整数转换为Unicode字符 
        else:
            S1=S1+x
    for x in s2:
        if ord(x)<97:
            S2=S2+unichr(ord(x)+32)
        else:
            S2=S2+x
    if S1<S2:
        return -1
    if S1>S2:
        return 1
    return 0 
print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

自定义函数的参数s1,s2是一个字符串,不能把一个字符串直接转成ASSLL码,只能一个字母一个字母的转换,然后再拼到一起,组成一个新的字符串。然后再比较。 上面的连个循环就是逐个字母转换

0 回复 有任何疑惑可以回复我~

底层用的就是ascii码排序。一个字符一个ascii码,字符串要全小写就要把里面各个字符遍历出来。

0 回复 有任何疑惑可以回复我~
#1

G_one 提问者

那请问这段代码怎么改呢 知道吗
2017-01-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

排序可否用ASCII码判断?请问这段代码问题是什么?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号