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

python进阶2-7作业

def cmp_ignore_case(s1, s2):

    if s1>64&&s1<91&&s2>64&&s2<91:

        if s1 < s2:

            return -1

        else if s1 > s2:

            return 1

        else:

            return 0

    if s1>96&&s1<123&&s2>96&&s2<123:

        s1=s1-32;

        s2=s2-32;

        if s1 < s2:

            return -1

        else if s1 > s2:

            return 1

        else:

            return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)

我想通过这种方式做,怎样修改程序才能正确运行呢?

正在回答

4 回答

python里面没有&&,只有and

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

慕莱坞5165709 提问者

非常感谢!
2017-09-02 回复 有任何疑惑可以回复我~

我用python3测试了一下

    'b' > 1和 'b' > '999'返回的都是True

你应该是把c语言的习惯带过来了。

就算你要比较也应该写成s1 > 'a' s1 < 'z'

其次你的整个算法都是有问题的,s1是字符串 不是单个字符。如果你真的要这样比你得循环每一位去做比较。那你就把一个高级语言玩得比C还low了。

高级语言讲就的是用最少的代码做事。 

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

慕莱坞5165709 提问者

谢谢了
2017-09-02 回复 有任何疑惑可以回复我~

从语法看:&&应该写成 and,else if 应该写成 elif 

从方法来看:sorted 比较的是 'bob', 'about', 'Zoo', 'Credit',是字符串而不是字符,字符串和整数比大小没有意义吧;如果纯比字符,你只考虑了小写间的比较和大写间的比较,你还没有考虑小写和大写的比较

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

慕莱坞5165709 提问者

谢谢你
2017-09-02 回复 有任何疑惑可以回复我~

你这个代码的思路只能在首字母同为大写或者同为小写时进行比较,一个大写一个小写就比较不了。这题只能先把大小写转换成一致再比较,因为题意就是要求忽略大小写进行排序

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

举报

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

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

进入课程

python进阶2-7作业

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信