鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 25(答题领鱼币)

[复制链接]
发表于 2018-5-8 13:33:23 | 显示全部楼层
String='easqWAwaeq'
String=sorted(String)
Newlist = String[:]
for each in String:
    #each如果是大写,就插入到它小写的前面
    if each.isupper():
        Newlist.insert(Newlist.index(each.lower()),each)
        Newlist.remove(each)
print(Newlist )
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-8 16:04:23 | 显示全部楼层

没考虑只有大写的情况。更正下。
String="easqWAwaeqshfohoahoFHAOJFAOJFAJhaofhaofoajFAOUFOAUQ"
upper = []
for each_ca in String:
    if each_ca.lower() not in String:
        upper.append(each_ca)
        String = String.replace(each_ca,each_ca.lower())
String=sorted(String)
Newlist = String[:]
for each in String:
    #each如果是大写,就插入到它小写的前面
    if each.isupper():
        Newlist.insert(Newlist.index(each.lower()),each)
        Newlist.remove(each)
Result = ''.join(Newlist)
for each_nu in Result :
    if each_nu.upper() in upper :
        Result  = Result .replace(each_nu,each_nu.upper())
print(Result)
结果:
AAAAAAaaaaaaeeFFFFFfffHhhhhhJJJjOOOOooooooQqqssUUWw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-16 21:53:17 | 显示全部楼层
def array(content):
    List = []
    for i in content:
        if i.isupper():
            List.append([ord(i),i])
        else:
            List.append([ord(i)-31.5,i])
    List.sort()
    for x in List:
        print(x[1],end='')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-22 16:38:43 | 显示全部楼层
## 提取字符串
x = input('请输入字符串:')
a = []
c = []
d = []
for each in x:
    a.append(ord(each))

## 排序 A:65 a:97
b = sorted(a)
for each in b:
    if 64 < each < 97:
        c.append(each)  ## 大写字母
    else:
        d.append(each)  ## 小写字母

for i in c:
    for j in d:
        if (i+32) <= j :
            k = d.index(j)
            d.insert(k,i)
            break
        
for each in d:
    print(chr(each),end = '')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-24 10:38:47 | 显示全部楼层
借花献佛:
参考了前面大牛的答案,主要想那就学习一下,字典用法,还有就是sorted排序方法
sortbook = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
temp = input('输入一个字符串:')
print(temp)
print(''.join(sorted(temp,key = sortbook.index)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-2 21:05:27 | 显示全部楼层
def paixu():
    str1 = 'easqWAwaeq'
    list1 = list(str1)
    for j in range(len(list1) - 1):
        for i in range(len(list1) - 1):
            a = ord(list1[i])
            b = ord(list1[i + 1])
            if a >= 65 and a <= 90:
                a += 31.5
            if b >= 65 and b <= 90:
                b += 31.5
            if a > b:
                list1[i], list1[i + 1] = list1[i + 1], list1[i]
    print(list1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-17 10:00:17 | 显示全部楼层
str1 = 'easqWAwaeq'
list1 = []

def str_sort(a):
    for each in a:
        each = ord(each)
        if each < 97:
            each += 31.5
        list1.append(each)

    list1.sort()

    for each in list1:
        if isinstance(each,int) == True:
            print('%c' % each,end='')
        else:
            print('%c' % int(each - 31.5),end = '')

str_sort(str1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-18 22:05:35 | 显示全部楼层
def order(m):
    letter=['A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z']
    list_m=list(m)[:]
    for i in range(len(list_m)):
        list_m[i]=letter.index(list_m[i])
    list_m.sort()
    n=''
    for i in list_m:
        n+=letter[i]
    print(n)
order('jihyftftESES')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-31 18:43:56 | 显示全部楼层
string=input("请输入字符串:")
lst=list(string)
lst.sort()
for i in range(len(lst)):
    if lst[i].islower():
        break
for j in range(0,i):
    for k in range(i,len(lst)):
        if lst[j].lower()==lst[k]:
            lst.insert(k-1,lst.pop(j))
            i-=1
for n in range(len(lst)-1,0,-1):
    print(n)
    if lst[n].isupper() and lst[n].lower()==lst[n-1]:
        lst.insert(n-1,lst.pop(n))        
print(''.join(lst))
---------------------------------------------------
前面的几位大佬们太厉害了,我的方法比较笨
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-31 17:01:48 | 显示全部楼层
哨子1122 发表于 2017-6-8 21:19
写了一个比较死板的,强制实现

有bug,如果大写字符不在字符串中则无法排序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-7 13:47:04 | 显示全部楼层
str1 = 'easqWAwaeq'
str2 = sorted(str1, key=lambda x: ord(x.lower()) * 2 + x.islower())
str2 = "".join(str2)
print(str2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-30 20:53:42 | 显示全部楼层
我要鱼币!
def prac(s):
    s1 = 'abcdefghijklmnopqrstuvwxyz'
    s2 = s1.upper()
    ss = ''

    for i in range(26):
        ss += s2[i]
        ss += s1[i]
    l = list(s)
    l.sort(key = ss.index)
    return ''.join(l)

if __name__ == '__main__':
    print(prac('easqWAwaeq'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-20 09:37:56 | 显示全部楼层
本帖最后由 panheng 于 2019-8-20 09:39 编辑
str1 = input("请输入仅包含大小写字母的字符串:")     #获取字符串
newstr = ''                                         #输出结果变量预定义
strlist = list(str1)
ordlist = sorted([ord(_)+31.5 if ord(_) < 97 else ord(_) for _ in strlist])       #转化为ASCII码排序,大写字母+31.5占位
chrlist = [chr(i) if i % 1 == 0 else chr(int(i-31.5)) for i in ordlist]           #ASCII码还原为字符,非整数则减去31.5
for i in chrlist:                                                                 #字符列表重组为新字符串
    newstr = newstr+i
print("您输入的字符串为:%s" % str1)
print("调整后的字符串为:%s" % newstr)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-29 16:59:49 | 显示全部楼层
def fun25():
    L1 = []
    S  = ''
    String1 = str(input("please enter a string:"))
    lists = list(String1)
    lists.sort()
    for string in lists:
        if string.isupper():
            L1.append(string)
        elif string.upper() in L1:
            L1.insert(L1.index(string.upper())+1,string)
        else:
            L1.append(string)
    for S1 in L1:
        S = S + S1
    return S
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 09:08:28 | 显示全部楼层
def f25(strings):
    d = {}
    for c, n in zip(range(65, 91), range(0, 52, 2)):
        d[chr(c)] = n
        d[chr(c+32)] = n+1
    return ''.join(sorted(strings, key=lambda x: d[x]))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 13:21:24 | 显示全部楼层
def fun25(str1):
    list1 = list(str1)
    list2 = []
    for each1 in list1:
        if each1.islower():
            if list2 == [] or list2[-1].lower() <= each1:
                list2.append(each1)
            else:
                for each2 in list2:
                    if each2.lower() > each1:
                        list2.insert(list2.index(each2), each1)
                        break
        if each1.isupper():
            if list2 == [] or list2[-1].upper() < each1:
                list2.append(each1)
            else:
                for each2 in list2:
                    if each2.upper() >= each1:
                        list2.insert(list2.index(each2), each1)
                        break

    str2 = ''
    for each in list2:
        str2 = str2[:] + each
    return str2

str1 = 'easqWAwaeq'
print(fun25(str1))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-25 16:11:49 | 显示全部楼层
print('----------每日练习题24----------')
#一个字符串仅包含大小写字母,现在要将其排序成一个新的字符串,次序为从a到z,且相同的大写和小写字母排在一起,大写在小写前。
#如原字符串为'easqWAwaeq',排序后为'AaaeeqqsWw'

string = str(input('请输入一段字符串(大小写字母):'))
list1 = list(string)
list1.sort()
#print(list1)
list1.sort(key=str.lower)
#print(list1)
list2 = ''.join(list1)
print(list2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:40:47 | 显示全部楼层
s = input("请输入一段字母:")
list1 = sorted(sorted(s),key = str.upper)
new_s = "".join(list1)
print(new_s)

def(s):
    list1 = sorted(sorted(s),key = str.upper)
    new_s = "".join(list1)
    print(new_s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-1 15:07:57 | 显示全部楼层
print(''.join(sorted(sorted(s), key = str.lower)))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-18 11:31:10 | 显示全部楼层
我的水平太低了用了一个非常愚蠢的方法来解决问题
def io(a):
        if ord(a)>90:
                return (ord(a)-32)
        else:
                return ord(a)

j = (input("请输入一个字符串:"))
r = list(j)
for i in range(len(r)-1):
        for  t in range(i+1,len(r)):
                if (io(r[i])>io(r[t])):
                        k = r[t]
                        r[t] = r[i]
                        r[i] = k
print("".join(r))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 21:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表