005_Python字符串练习_[吉比特校招编程题]字母数字混合排序

输入:一串字符串,包含数字[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))

执行结果:
在这里插入图片描述

发布了37 篇原创文章 · 获赞 0 · 访问量 5335

猜你喜欢

转载自blog.csdn.net/qq_21156327/article/details/103404660
今日推荐