鱼C论坛

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

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

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

使用道具 举报

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

没考虑只有大写的情况。更正下。
  1. String="easqWAwaeqshfohoahoFHAOJFAOJFAJhaofhaofoajFAOUFOAUQ"
  2. upper = []
  3. for each_ca in String:
  4.     if each_ca.lower() not in String:
  5.         upper.append(each_ca)
  6.         String = String.replace(each_ca,each_ca.lower())
  7. String=sorted(String)
  8. Newlist = String[:]
  9. for each in String:
  10.     #each如果是大写,就插入到它小写的前面
  11.     if each.isupper():
  12.         Newlist.insert(Newlist.index(each.lower()),each)
  13.         Newlist.remove(each)
  14. Result = ''.join(Newlist)
  15. for each_nu in Result :
  16.     if each_nu.upper() in upper :
  17.         Result  = Result .replace(each_nu,each_nu.upper())
  18. print(Result)
复制代码

结果:
AAAAAAaaaaaaeeFFFFFfffHhhhhhJJJjOOOOooooooQqqssUUWw
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

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

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

使用道具 举报

发表于 2018-5-24 10:38:47 | 显示全部楼层
借花献佛:
参考了前面大牛的答案,主要想那就学习一下,字典用法,还有就是sorted排序方法
  1. sortbook = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
  2. temp = input('输入一个字符串:')
  3. print(temp)
  4. print(''.join(sorted(temp,key = sortbook.index)))
复制代码

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

使用道具 举报

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

使用道具 举报

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

  3. def str_sort(a):
  4.     for each in a:
  5.         each = ord(each)
  6.         if each < 97:
  7.             each += 31.5
  8.         list1.append(each)

  9.     list1.sort()

  10.     for each in list1:
  11.         if isinstance(each,int) == True:
  12.             print('%c' % each,end='')
  13.         else:
  14.             print('%c' % int(each - 31.5),end = '')

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

使用道具 举报

发表于 2018-8-18 22:05:35 | 显示全部楼层
  1. def order(m):
  2.     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']
  3.     list_m=list(m)[:]
  4.     for i in range(len(list_m)):
  5.         list_m[i]=letter.index(list_m[i])
  6.     list_m.sort()
  7.     n=''
  8.     for i in list_m:
  9.         n+=letter[i]
  10.     print(n)
  11. 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 | 显示全部楼层
  1. str1 = 'easqWAwaeq'
  2. str2 = sorted(str1, key=lambda x: ord(x.lower()) * 2 + x.islower())
  3. str2 = "".join(str2)
  4. print(str2)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

使用道具 举报

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

使用道具 举报

发表于 2020-2-24 13:21:24 | 显示全部楼层
  1. def fun25(str1):
  2.     list1 = list(str1)
  3.     list2 = []
  4.     for each1 in list1:
  5.         if each1.islower():
  6.             if list2 == [] or list2[-1].lower() <= each1:
  7.                 list2.append(each1)
  8.             else:
  9.                 for each2 in list2:
  10.                     if each2.lower() > each1:
  11.                         list2.insert(list2.index(each2), each1)
  12.                         break
  13.         if each1.isupper():
  14.             if list2 == [] or list2[-1].upper() < each1:
  15.                 list2.append(each1)
  16.             else:
  17.                 for each2 in list2:
  18.                     if each2.upper() >= each1:
  19.                         list2.insert(list2.index(each2), each1)
  20.                         break

  21.     str2 = ''
  22.     for each in list2:
  23.         str2 = str2[:] + each
  24.     return str2

  25. str1 = 'easqWAwaeq'
  26. print(fun25(str1))
复制代码

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

使用道具 举报

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

  4. string = str(input('请输入一段字符串(大小写字母):'))
  5. list1 = list(string)
  6. list1.sort()
  7. #print(list1)
  8. list1.sort(key=str.lower)
  9. #print(list1)
  10. list2 = ''.join(list1)
  11. 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 | 显示全部楼层
  1. print(''.join(sorted(sorted(s), key = str.lower)))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

  6. j = (input("请输入一个字符串:"))
  7. r = list(j)
  8. for i in range(len(r)-1):
  9.         for  t in range(i+1,len(r)):
  10.                 if (io(r[i])>io(r[t])):
  11.                         k = r[t]
  12.                         r[t] = r[i]
  13.                         r[i] = k
  14. print("".join(r))

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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