设定的问题 :定义一个函数,输入字符串,如果字符串是顺序的则返回'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 函数。