字符串的顺序问题及常见的报错分析

设定的问题 :定义一个函数,输入字符串,如果字符串是顺序的则返回'UP',如果是倒序的则返回'DOWN',如果是乱序的则返回Flase

def func():
    input

  在本题中使用input 输出字符串是完全没问题的,但是我们尽量不要在函数内写输入,因为所有的输入都可以被函数的参数所替代,参数就等于定义了一个变量等待我们的调用(传入数据)

def func(x):
    if "".join(sorted(x))==x:
        return "UP"
    elif sorted(x,reverse=Ture)==list(x):
        return "down"
    else:
        return False

    以上为正确答案,下面分析几个易错知识点:

也许有些小伙伴想到了 sort() 方法,但是sort 函数是永久排序,意味着如果有字符串"321", 排序后将变为"123", 原来的字符串也将要改变为“123”,将导致一个误差。

def func(x):
    if sorted(x)==x:
        return "up"

看起来貌似没问题,但是在我们的交互模式中

func("abc") 的调用为空,用print() 打印该值,出现None, 即代表着if 内的语句没有运行

返回检查 

sorted("abc")  # sorted 为临时生成一个新的文件,不改变源文件

发现生成一个列表 ['a','b','c']

sorted(x)==x  代表着 字符串等于列表固然不会运行

这里有两种解决办法 1.强行把列表转拼接为字符串,但无法转化为字符串

str(sorted("abc"))

出现  " ['a','b','c'] "   ,他把列表当成了一个完整的字符串,顾无法转换

所以第一时间想到 join 函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值