鱼C论坛

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

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

[复制链接]
发表于 2017-8-27 19:21:46 | 显示全部楼层
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Created by lightwave on 2017/8/27


  4. def sort_func(x):
  5.     ord_x = ord(x)
  6.     return ord_x if ord_x <= ord('Z') else ord(x.upper()) + 0.1


  7. content = input('请输入内容:')
  8. new_content = ''.join(sorted(content, key=sort_func))
  9. print("排序后内容:", new_content)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-18 15:35:38 | 显示全部楼层
a = 'easqWAwaeq'
print(a)
print(''.join(sorted(a, key=lambda x:ord(x.lower())*2+x.islower())))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-21 22:15:40 | 显示全部楼层
  1. # all the char change to lowercase, then sort the string
  2. def SortString(string):
  3.     LowerString = string.lower()
  4.     StrList = list(LowerString)
  5.     StrList.sort()
  6.     LowerString = "".join(StrList)
  7.    
  8.     return LowerString

  9. # Find the uppercase in the original string;
  10. # Conversion the lowercase to uppercase in the new string if it is uppercase in the original string   
  11. def MainFunction(string):
  12.     # sort the original string
  13.     NewString = SortString(string)

  14.     for i in range(len(string)):
  15.         if True == string[i].isupper():
  16.             tmp = string[i].lower()
  17.             index = NewString.find(tmp)
  18.             NewString = NewString.replace(NewString[index], NewString[index].upper(), 1)
  19.     return NewString

  20. OriginalString = 'eaAsqWAwaeqwerQwqRRRRRRRRRRRertwer'
  21. print MainFunction(OriginalString)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 09:47:33 | 显示全部楼层
def fun(temp):
    items=list(str(e) for e in temp)
    result=[]
    array=['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']

    for each in array:
        if each in items:
            num=items.count(each)
            for a in range(0,num):
                result.append(each)
    print(result)

if __name__=='__main__':
    test=str(input("输入一串字母混合大小写"))
    fun(test)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-19 14:13:59 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

感觉这个写的太棒了。。。。
我之前的思路是准备把所有字符转换成ASCII之后比较大小。但是没想到还能进行+True or False这种。。。太牛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-20 16:40:57 | 显示全部楼层
a = sorted('easqWAwaeq')
a.remove('W')
a.append('W')
b = ''.join(a)
print(b)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-20 17:55:08 | 显示全部楼层
求鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 06:12:33 | 显示全部楼层
##按AaBbCc.....格式生成字符串
s2=''
for i in range(26):
    s2+=chr(65+i)+chr(97+i)
##统计在给出的字符串中出现的次数,存到结果。
r=''
s='easqWAwaeq'
for i in s2:
    su=s.count(i)
    r+=i*su
print(s)
print(r)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-24 08:58:55 | 显示全部楼层
看看 哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 09:53:36 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

你的方法很好,但我有一点不明白,为什么在函数返回的时候要有*2,不要我觉得也可以啊,求解释?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-11 11:14:13 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

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

使用道具 举报

发表于 2018-3-11 11:58:54 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

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

使用道具 举报

发表于 2018-3-11 11:59:25 | 显示全部楼层
鱼币,,,,,啊哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-13 12:28:24 | 显示全部楼层
ooxx7788 发表于 2017-4-10 21:02
其实我最初的想法,直接把26个字母按照大小写间隔写一遍,编成字典,直接把字母变成值排序,再变回来就 ...

太厉害了,我都没看懂咋回事
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-14 09:51:17 | 显示全部楼层
  1. a = 'easqWAwaeq'
  2. def sortedString(string):
  3.     string = sorted(string)
  4.     upperChars = [i for i in string if i.isupper()]
  5.     lowerChars = [i for i in string if i.islower()]
  6.     for upperChar in upperChars:
  7.         for i in range(len(lowerChars)):
  8.             if upperChar.lower() <= lowerChars[i]:
  9.                 lowerChars.insert(i, upperChar)
  10.                 break
  11.         else:
  12.             lowerChars.append(upperChar)
  13.     return ''.join(lowerChars)
  14.         

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

使用道具 举报

发表于 2018-3-15 15:30:08 | 显示全部楼层
我爱 小甲鱼  我爱小甲鱼 我需要鱼币  学习 课后作业  零基础啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 13:33:35 | 显示全部楼层

def Rank(string):
        r = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
        list_r = []
        list_r1 = []
        result = ''
        for each in string:
                if each in r:
                        list_r.append([r.find(each),each])
        list_r.sort()
        for each in list_r:
                list_r1.append(each[1])
        for each in list_r1:
                result += each
        print(result)
       
       
       
       
Rank('easqWAwaeq')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 22:03:27 | 显示全部楼层
  1. import random, string

  2. lstr = random.sample(string.ascii_letters, 20)
  3. print("原字符顺序:{0}".format(''.join(lstr)))
  4. print("新排序字符:{0}".format(''.join(sorted(lstr, key=lambda x: ord(x.upper()) + ord(x.lower())))))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-11 16:50:32 | 显示全部楼层
  1. '''
  2. 一个字符串仅包含大小写字母,现在要将其排序成一个新的字符串
  3. 次序为从a到z,且相同的大写和小写字母排在一起,大写在小写前。
  4. 如原字符串为'easqWAwaeq',排序后为'AaaeeqqsWw'
  5. '''
  6. def sortfunc(s):
  7.     n=ord(s)
  8.     if n<97:
  9.         return n+32-0.5
  10.     else:
  11.         return n

  12. def sortstr(mystr):
  13.     return ''.join(sorted(mystr,key=sortfunc))

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

使用道具 举报

发表于 2018-4-11 17:04:17 | 显示全部楼层
  1. def fun(s1):
  2.     s2 = list(s1)
  3.     s2.sort()

  4.     if s2[0].isupper():
  5.         count = len(s2)
  6.         for i in range(0, count):
  7.             for j in range(i + 1, count):
  8.                 if s2[i].isupper() ^ s2[j].isupper():
  9.                     if ord(s2[j]) - ord(s2[i]) < 32:
  10.                         s2[i], s2[j] = s2[j], s2[i]
  11.                 else:
  12.                     if ord(s2[j]) < ord(s2[i]):
  13.                         s2[i], s2[j] = s2[j], s2[i]
  14.                
  15.     return ''.join(s2)
  16.        
  17.        
  18. s1 = 'easqWAwaeq'
  19. print(fun(s1))
复制代码

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 18:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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