输入:一串字符串,包含数字[0-9]和字母[‘a’-‘z’]
输出:一串字符串,按数字从小到大字母a-z排序,并且所有数字排在字母后面
方法1:字符串的for 循环 + 字符串的常用判别函数: isdigit()、isalpha() + 分支流程控制 + sorted 内置方法实现排序
# 1. 用户输入
user_str = input()
# 2. 定义仅存储字母或数字的字符串变量
alpha = ""
digit = ""
# 3. 遍历输入的字符串
for item in user_str:
# 3.1 如果元素是字母,将其添加至alpha = 'a,d,f,q,...'
if item.isalpha():
alpha += item
# 3.2 如果元素是数字,将其添加至digit = '1,4,5,2,6,...'
else:
digit += item
# 4. 对两个列表分别排序
# sorted 输入刻碟带对象,返回一个新的列表,默认实现对输入对象的升序排列。
# key=xxx 提供自定义排序顺序;
# reverse=True 以实现对输入对象的降序排列。
alpha = sorted(alpha)
digit = sorted(digit)
# 5. 按照先字母后数字的顺序,利用join将列表中的字符型元素连接为一串字符串
print("".join(alpha) + "".join(digit))
方法2:列表的for 循环,结合range确定索引 + 列表切片 + 分支流程控制 + 列表的排序方法list.sort()
# 1. 用户输入并转化为列表,后续利用列表的内置排序方法
user_str = list(input())
# 2. 列表的排序方法,无返回值,直接在输入数据上执行排序,此为与sorted排序的区别
# user_str = ["1", "2", "3", ,,, ,"a", "b", ..., "z"]
user_str.sort()
# 3. 遍历输入字符串元素,结合range确定元素索引
for i in range(len(user_str)):
# 4. 如果当前元素的ascii码大于“9”的,结合有序性,确定字母切片和数字切片
if ord(user_str[i]) > ord("9"):
# 4.1 互换字母切片和数字切片的位置,即案例中要求的
res = user_str[i:] + user_str[:i]
# 4.2 一旦确定字母和数字的分界点 i 后,整个退出 for 循环
break
# 5. 利用join将列表中的字符型元素连接为一串字符串
print("".join(res))
执行结果: